这段代码很容易解释。我在和Python混日子,这个(a是b==b==a是c)意外地返回True。在我看来,操作顺序是先==然后是'is'(根据google)。所以代码应该等价于(a is True is c),后者返回False。你知道吗
不管怎样,我尝试了很多可能的操作顺序,但似乎都返回错误。我错过了什么很明显的东西吗?你知道吗
我用的是3.4.2
a,b,c=['wtf' for i in range(3)]
print(a is b==b==a is c) #prints True
print(b==b==a) #prints True
print(a is True is c) #prints False
print((a is (b==b==a)) is c) #prints False
print(a is (b==b==a) is c) #prints False
print((a is b==b==a) is c) #prints False
print((a is b==b)==a is c) #prints False
print((a is b)==b==a is c) #prints False
print(a is ((b==b)==a) is c) #prints False
print(a is ((b==b)==a is c)) #prints False
print((a is b)==(b==(a is c))) #prints False
print((a is b)==b==(a is c)) #prints False
在Python比较运算符链中,so
a is b==b==a is c
等价于由于a、b和c都是同一个对象,所有比较的结果都是
True
。你知道吗相关问题 更多 >
编程相关推荐