变量 = 对象
a = 3
步骤说明:
a = 3模型 :
a = 1 a = 'python' a = 1.2
a = 3 b = a
a 指向对象3; b = a,此赋值操作,b也指向3。
b = a
例一模型:
a = 3 b = a a = 'spam'
a 重新指向另一个对象。
例二模型:
== 指值相等 is 指地址相等,即指引用相等。
==
is
lst1 = [1, 2, 3] lst2 = lst1 lst3 = [1, 2, 3] print(lst1, lst2, lst3) # 执行结果 [1, 2, 3] [1, 2, 3] [1, 2, 3] # 值相等 lst2[0] = 10 print(lst1, lst2, lst3) # 执行结果 [10, 2, 3] [10, 2, 3] [1, 2, 3] # lst1和lst2发生变化
lst1 = [1, 2, 3] lst2 = lst1 lst3 = [1, 2, 3] print(lst1 == lst2) print(lst1 is lst2) print(lst1 == lst3) print(lst1 is lst3) # 执行结果 True True True False
说明,lst1和lst2指向同一个对象。而lst3则执行另一个对象。两个对象只是值相等。
a = 1 b = a c = 1 print(a == b) print(a is b) print(a == c) print(a is c) # 执行结果 True True True True
这里a、b、c都指向同一个对象。 这是因为小的整数和字符串被缓存并复用了,所以is指明a和c是引用了一个相同的对象。
例如
a = 1 a = 'python'
这里的 1 并没有被直接回收,虽然它的计数减一,但是在系统代码中却被大量引用。查看引用计数如下
import sys print(sys.getrefcount(1)) # 执行结果 4013
注: 知识点参考了<<Python 学习手册 第四版>>
本文分享自 作者个人站点/博客 前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!