Python通过`is`与`==`比较
示例
常见的陷阱是混淆相等比较运算符is和==。
a==b比较的值a和b。
aisb将比较认同的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
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短