python的赋值真实上说应该不是赋值 , 而更像是“引用” , 如何理解“引用”呢,python中一直对象的生成是会在内存中分配给一个内存地址,这个内存地址可以使用id()方法去获取,然后在变量赋值时,将变量直接引用该对象的内存地址,进而完成变量赋值,如:
x = 1, 赋值时x直接引用1所在内存的地址,y = x, 此时是y直接引用x的所指向的内存地址
python中有判断变量的方法如 is() 和 ==,二者在判断变量时是有区别的 , is函数是判断变量的内存地址是否相同,而 == 是判断变量的值是否相同 , 举例说明:
a = 1; b = 1.0
a is b# False
a == b # True
小心python变量赋值的陷阱
看到上面的所述知道了python变量赋值实则是引用,引用的是对象的内存地址 。所赋的值可以分两类,一类是可变的,如列表,字典,集合;一类是不可变的 , 如字符串、元组 。所以当对象为可变类型时就会出现一种情景,我们举例说明:
x = [1, 2, 3]
y = x
print x == y# True
print x is y# True
print x# [1, 2, 3]
print y# [1, 2, 3]
y.append(4)
print x# [1, 2, 3, 4]
print y# [1, 2, 3, 4]
可以看到y在进行调整时(添加了一个元素),x也跟着变动了 , 这进一步说明了,python中的变量赋值时引用,x,y 赋值时指向了同一处内存地址,所以当y变动时,x同样也发送了变化,解决这中现象的方法可以是x, y = [1,2,3], [1,2,3]这样赋值,虽说此时 x==y 是True,但是确实是2个不同的内存地址 , 所以 x is y 则是 False 。或者可以使用copy模块,实质是相同的,创建2个不同的内存地址,使其分离 。
【is函数python is函数怎么用】关于is函数python和is函数怎么用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
- mysql怎么设置时区 mysql时间显示设置
- 云服务器游戏出现黑屏问题怎么解决? 云服务器游戏黑屏怎么办
- redis缓存失效怎么办 redis缓存数据不一致
- 如何修改戴尔服务器的IP地址? 戴尔服务器ip地址怎么改
- mongodb大公司案例 MongoDB公司怎么样
- mysql下到了c盘 mysql怎么不存到c盘
- mysql怎么把两个字段拼在一起 mysql字段拼接中文
- 联合索引怎么创建 联合索引mongodb
- 如何正确接入高防服务器? 高防服务器怎么接
- mysql怎么看慢查询日志 mysql查看单表慢查询
