Python通过`is`与`==`比较
示例
常见的陷阱是混淆相等比较运算符is和==。
a == b比较的值a和b。
a is b将比较认同的a和b。
为了显示:
a = 'Python is fun!'b = 'Python is fun!'
a == b # 返回True
a is b # 返回False
a = [1, 2, 3, 4, 5]
b = a # b引用a
a == b # 真正
a is b # 真正
b = a[:] # b现在引用a的副本
a == b # 真正
a is b # 错误[!!]
基本上,is可以视为的简写。id(a) == id(b)
除此之外,还有一些运行时环境的怪癖使事情变得更加复杂。True与相比,短字符串和小整数将返回is,这是因为Python机器试图为同一对象使用更少的内存。
a = 'short'b = 'short'
c = 5
d = 5
a is b # 真正
c is d # 真正
但是较长的字符串和较大的整数将分别存储。
a = 'not so short'b = 'not so short'
c = 1000
d = 1000
a is b # 假
c is d # 假
您应该is用来测试None:
if myvar is not None:# 不无
pass
if myvar is None:
# 没有
pass
的用途is是测试“前哨”(即唯一对象)。
sentinel = object()def myfunc(var=sentinel):
if var is sentinel:
# 没有提供价值
pass
else:
# 提供了价值
pass
以上是 Python通过`is`与`==`比较 的全部内容, 来源链接: utcz.com/z/340650.html