这不是一个实际的问题-我只是对观察到的某些奇怪行为感到好奇,并想知道我是否正确理解" is"运算符。
这是一些可预测的Python解释器输出:
>>> True is True
True
>>> (1==1) is True
True
现在让我们定义一个名为True的变量:
>>> True = 'abc'
>>> True == 'abc'
True
>>> True is 'abc'
True
对于布尔运算,解释器仍将返回" True",但是布尔运算的结果被认为既不等于" abc"也不等于True。
>>> (1==1)
True
>>> (1==1) is 'abc'
False
>>> (1==1) is True
False
谁能解释这个奇怪的行为?
奇怪的是True不是保留关键字(或任何Python拥有的)。
@iamnotmaynard:True已成为Python 3中的关键字,并且该赋值将引发SyntaxError: assignment to keyword。
大多数内置的arent关键字...您几乎可以将所有值重新分配。 值得庆幸的是,它们通常是本地的,因此当一个粗心的程序员在其函数中执行此操作时ÿ