Python布尔比较
我正在测试Python的布尔表达式。当我运行以下代码时:Python布尔比较,python,boolean,boolean-logic,boolean-expression,Python,Boolean,Boolean Logic,Boolean Expression,我正在测试Python的布尔表达式。当我运行以下代码时: x = 3 print type(x) print (x is int) print (x is not int) 我得到以下结果: <type 'int'> False True 假的 真的 为什么(x是int)返回false而(x不是int)返回true,而x显然是整数类型?最好的方法是使用isinstance() 因此,在你的情况下: x = 3 print isinstance(x, int) 关于pytho
x = 3
print type(x)
print (x is int)
print (x is not int)
我得到以下结果:
<type 'int'>
False
True
假的
真的
为什么(x是int)返回false而(x不是int)返回true,而x显然是整数类型?最好的方法是使用
isinstance()
因此,在你的情况下:
x = 3
print isinstance(x, int)
关于pythonis
运算符为
且不为
测试对象标识:x为y为真
当且仅当x和y是同一对象
摘自如果要使用is,应执行以下操作:
>>> print (type(x) is int)
True
尝试将这些输入到您的解释器中:
type(x)
int
x is 3
x is not 3
type(x) is int
type(x) is not int
x是int
的原因是它询问数字3
和Python int类是否代表同一个对象。很明显,这是错误的
作为旁注,如果您不确切知道Python的
is
关键字在做什么,那么Python的关键字可能会以一些意想不到的方式工作,如果您曾经测试过等式,那么您几乎肯定应该避免使用它。这就是说,在实际程序之外尝试它是一个非常好的主意。int
是一个类。如果只键入int
,则会得到
is
比较引用。您需要isinstance(x,int)
Python不是英语。is
运算符做了一些非常具体的事情,这似乎与您所期望的不同。is
不是布尔运算符,它是一个标识运算符查看此问题了解更多详细信息:感谢大家帮助我理解Python的“is”运算符。我曾读到,“is”可用于检查标识符是否属于特定类型。感谢您的程序员为我展示了正确的语法。