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

回到顶部