Python布尔比较
问题描述:
我正在测试Python的布尔表达式。当我运行下面的代码:Python布尔比较
x = 3
print type(x)
print (x is int)
print (x is not int)
我得到下面的结果:当清楚地x是一个
<type 'int'>
False
True
为什么(X为int)返回false和(x是不是int)返回true整数类型?
答
两者如果你想使用is
你应该做的:
>>> print (type(x) is int)
True
+0
谢谢大家帮助我理解Python的'is'运算符。我读过'是'可以用来检查标识符是否是特定类型。感谢您的编码器为我展示了这样做的正确语法。 –
答
做到这一点,最好的办法是用isinstance()
所以你的情况:
x = 3
print isinstance(x, int)
关于蟒蛇is
运营商
is
和对象标识is not
测试:X是y是真的 当且仅当x和y是相同的对象。
从docs
答
尝试输入这些到您的解释:
type(x)
int
x is 3
x is not 3
type(x) is int
type(x) is not int
之所以x is int
是假的它是问号码3
和P ython int类表示相同的对象。这应该是相当清楚的,这是错误的。
作为一个附注,Python的is
关键字可以以一些意想不到的方式工作,如果您不确切知道它在做什么,并且几乎可以肯定地避免它,如果您曾经测试过相等性。也就是说,在实际的程序之外进行实验是一个非常好的主意。
'int'是一个类。如果你输入'int',你会得到'' –
'is'比较引用。你想'isinstance(x,int)' –
Python不是英文的。 'is'运算符做了一些非常具体的事情,看起来与你期望的不同。 – deceze