小数据池支持的数据类型:int、str、bool(整型、字符串、布尔值)
代码块:一个函数,一个py文件,终端的每一行都是代码块
== 和 is的区别(id()查看内存地址)
? == 是比较两端的值是否相等
? is是比较两端的内存地址是否相等
? print(id(a),id(b))查内存地址
驻留机制:节省空间,提高效率(减少了开辟空间和销毁空间的耗时间
小数据池和代码块同时存在时,先执行代码块
深拷贝:不可变数据类型共用,可变数据类型新开辟一个空间
import copy
############# 数字和字符串 ##############
n1 = 123
n2 = 'mjc'
n1_1 = n1 # 赋值
n2_2 = n2 # 赋值
print(id(n1), id(n1_1))
>>4355288240 4355288240
print(id(n2), id(n2_2))
>>4358346040 4358346040
n1_c = copy.copy(n1) # 浅拷贝
n2_c = copy.copy(n2) # 浅拷贝
print(id(n1), id(n1_c), id(n2), id(n2_c))
>>4355288240 4355288240 4358346040 4358346040
n1_d = copy.deepcopy(n1) # 深拷贝
n2_d = copy.deepcopy(n2) # 深拷贝
print(id(n1_d), id(n1), id(n2_d), id(n2))
>>4355288240 4355288240 4358346040 4358346040
? 对于字符串和数字,元组等不可变数据类型,赋值和深浅拷贝毫无意义,因为同时指向的是同一个内存地址
? 对于字典、列表其他可变数据类型进行赋值、深拷贝 和浅拷贝时,内存地址是不同的
原文:https://www.cnblogs.com/python111/p/12363924.html