我正在尝试下一个代码:
x = 'asd'
y = 'asd'
z = input() #write here string 'asd'. For Python 2.x use raw_input()
x == y # True.
x is y # True.
x == z # True.
x is z # False.
Run Code Online (Sandbox Code Playgroud)
为什么我们在最后一个表达中有错?
Ami*_*hum 13
is检查身份.a is b是Trueiff a并且b是相同的对象(它们都存储在相同的内存地址中).
==支票平等,这通常是由魔术方法定义__eq__-即a == b是True如果a.__eq__(b)是True.
在具体情况下,Python将两个硬编码字符串优化为同一个对象(因为字符串是不可变的,因此没有危险).由于input()将在运行时创建一个字符串,因此无法进行优化,因此会创建一个新的字符串对象.