- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
变量进阶(理解)
目标
变量的引用
可变和不可变类型
局部变量和全局变量
01.变量的引用
变量和数据都是保存在内存中的
在Python中函数的参数传递以及返回值都是靠引用传递的
1.1引用的概念
在Python中
变量和数据是分开存储的
数据保存在内存中的一个位置
变量中保存着数据在内存中的地址
变量中记录数据的地址,就叫做记录数据的地址引用
使用id()函数可以查看变量中保存数据所在的内存地址
注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是修改了数据的引用
变量不再对之前的数据引用
变量改为对新赋值的数据引用
1.2变量引用的示例
在Python中,变量的名字类似于便签纸贴在数据上
定义一个整数变量a,并且赋值为1
||||::|::||a=1||
代码图示
将变量a赋值为2
||||::|::||a=2||
代码图示
定义一个整数变量b,并且将变量a的值赋值给b
||||::|::||b=a||
代码图示
2
变量b是第个贴在数字2上的标签
1.3函数的参数和返回值的传递
/
在Python中,函数的实参返回值都是是靠引用来传递来的
```pythondeftest(num):
print(-*50)
print(%d在函数内的内存地址是%x%(num,id(num)))
result=100
print(返回值%d在内存中的地址是%x%(result,id(result)))
print(-*50)
returnresult
a=10print(%x%id(a))
调用函数前内存地址是
r=test(a)
print(调用函数后实参内存地址是%x%id(a))print(调用函数后返回值内存地址是%x%id(r))
```
02.可变和不可变类型
不可变类型,内存中的数据不允许被修改:不可变类型
,,,,
数字类型intboolfloatcomplexlong(2.x)
字符串str
元组tuple
可变类型,内存中的数据可以被修改:可变类型
列表list
字典dict
pythona=1a=helloa=[1,2,3]a=[3,2,1]
```pythondemo_list=[1,2,3]
print(定义列表后的内存地址%d%id(demo_list))
demolist.append(999)demolist.pop(0)demolist.remove(2)demolist[0]=10
print(修改数据后的内存地址%d%id(demo_list))
demo_dict={name:小明}
print(定义字典后的内存地址%d%id(demo_dict))
demodict[age]=18demodict.pop(name)demo_dict[name]=老王
print(修改数据后的内存地址%d%id(demo_dict))
```
注意:字典的key只能使用不可变类型的数据
注意
1.可变类型的数据变化,是通过可变类型方法来实现的
2.如果给一个可变类型的变量,赋值了一个新的数据,引用会修改引用会修改
变量不再对之前的数据引用
变量改为对新赋值的数据引用
哈希(hash)
Python中内置有一个名字叫做hash(o)的函数
接收一个不可变类型的数据作为参数
返回结果是一个整数
哈希
文档评论(0)