Python 中的 is 运算符在什么情况下可以用于身份测试?


示例

is 运算符是 Python 中的身份运算符。它测试对象的身份。让我们来看一个例子:

x = ["Paul","Mark"] y = ["Paul","Mark"] z = x # Python IS operator print(x is z)

输出

True

假设我们考虑另一个例子,其中测试a is b 等价于:

id(a) == id(b)

身份测试的关键属性是:一个对象总是与其自身相同,a is a 总是返回 True。身份测试通常比相等性测试更快。与相等性测试不同,身份测试保证返回布尔值 True 或 False。

然而,只有在保证对象身份的情况下,才能用身份测试代替相等性测试。通常,有三种情况保证身份:

  • 赋值创建新的名称,但不改变对象身份。

    赋值new = old后,保证new is old

  • 将对象放入存储对象引用的容器中不会改变对象身份。

    列表赋值s[0] = x后,保证s[0] is x。

  • 如果一个对象是单例,这意味着只能存在该对象的单个实例。赋值a = Noneb = None后,保证a is b,因为None是单例。

记住,身份测试不应用于检查整数和字符串等常量,因为它们不能保证是单例。在下面的例子中,我们只得到 False:

整数的身份测试

示例

让我们测试整数元素:

a = 1000 b = 500 c = b + 500 print(a is c)

输出

False

字符串的身份测试

示例

字符串身份测试的示例:

a = 'Amit' b = 'Am' c = b + 'it' print(a is c)

输出

False

可变类型身份测试

示例

在 Python 中,列表是可变的。可变容器的新实例永远不会相同;因此身份测试返回 False:

a = [10, 20, 30] b = [10, 20, 30] print(a is b)

输出

False

更新于:2022年9月19日

69 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.