发布时间:2019-07-23 09:40:11编辑:auto阅读(1320)
变量 = 对象
a = 3
步骤说明:
a = 3
模型 :
a = 1
a = 'python'
a = 1.2
a = 3
b = a
a 指向对象3; b = a
,此赋值操作,b也指向3。
例一模型:
a = 3
b = a
a = 'spam'
a 重新指向另一个对象。
例二模型:
==
指值相等
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 学习手册 第四版>>
上一篇: [python]map方法与并行执行
下一篇: python3内置函数大全
47484
45786
36784
34317
28955
25589
24436
19606
19102
17627
5458°
6041°
5563°
5632°
6566°
5370°
5370°
5878°
5851°
7163°