""" 参考:https://blog.csdn.net/qq_37616069/article/details/79572733 参考:https://www.runoob.com/note/33502 知识点: 1. python3 的 "==" 判断的是值和类型是否相同。 上边所说的“类型”,指的是python3的标准数据类型,比如: Python3 中有六个标准的数据类型: Number(数字),String(字符串),List(列表) Tuple(元组),Set(集合),Dictionary(字典) Python3 的六个标准数据类型中: 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。 2. is 判断两个变量是否绑定同一个地址的值。 也就是说,is 是判断的内存地址。 3. is 与 == 区别 : is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。 a is b 相当于 id(a)==id(b),id() 能够获取对象的内存地址。 如果 a=10;b=a; 则此时 a 和 b 的内存地址一样的; 但当 a=[1,2,3]; 另 b=a[:] 时,虽然 a 和 b 的值一样,但内存地址不一样。 如果此时定义 a=10、b=10, 然后再对比 a is b 会发现返回的结果是 True, 脚本模式(同一模块/代码块): 整型[-5, +∞]、字符串,不会重新分配内存地址。 交互模式(同一行算同一模块,不同行算不同模块): 整型[-5, 256]、字符串,不会重新分配内存地址。 >>> a = 257 >>> b = 257 >>> a is b False >>> a=4444; b=4444; >>> a is b True n. id(obj, /) 返回对象的标识。 这可以保证在同时存在的对象中是唯一的。 (CPython使用对象的内存地址)。 """ import copy # 1.is a = [1, 2, 3] b = a print(a == b) # True print(a is b) # True # 2.is not c = copy.deepcopy(a) print(c == a) # True print(c is a) # False # 3.查看变量内存地址。 print(id(a)) # 2373371357832 print(id(b)) # 2373371357832 print(id(c)) # 2373371357768 # 4.判断类型。 print(1 == "1") # False # 5.None print(None is None) # True a = None print(a is None) # True # 6.数字类型的判断 # 整型 vs 浮点型 print(0 == 0.0) # True print(type(0)) # <class 'int'> print(type(0.0)) # <class 'float'> # 7. # 数字类型 vs 字符串类型 print(0 == "0") # False print(0.0 == "0.0") # False # 8. a = 10 b = 10 print("a is b:", a is b) # a is b: True a = -5 b = -5 print(a is b) # True a = -6 b = -6 print(a is b) # False a = 256 b = 256 print(a is b) # True a = 257 b = 257 print(a is b) # True a = 100000 b = 100000 print(a is b) # True a = 'is' b = 'is' print(a is b) # True a = (1, 2, 3) b = (1, 2, 3) print(a is b) # False
python3 == vs is.py
最新推荐文章于 2022-11-28 15:48:21 发布