2016-09-29 7 views
1

私はPythonのブール式をテストしています。私は次のコードを実行すると:明らかにxがあるときPythonブール比較

<type 'int'> 
False 
True 

がなぜある(xは整数である)、falseを返すと、(xはint型されていません)trueを返す:

x = 3 
print type(x) 
print (x is int) 
print (x is not int) 

を私は次のような結果を得ます整数型ですか?

+4

'int'はクラスです。 'int'と入力すると' ' –

+9

'is'が参照を比較します。 'isinstance(x、int)'が必要です。 –

+0

Pythonは英語ではありません。 'is'演算子は非常に特殊な処理を行いますが、これはあなたが期待するものとは異なるようです。 – deceze

答えて

0

から撮影:

>>> print (type(x) is int) 
True 
+0

Pythonの 'is'演算子の理解を助けてくださった皆様、ありがとうございます。私は、識別子が特定のタイプであるかどうかをチェックするために 'is'を使用できると読んでいました。そのための正しい構文を教えてくれてありがとうございました。 –

2

これを行うための最善の方法は、あなたのケースでそうisinstance()

を使用している:

x = 3 
print isinstance(x, int) 

についてのpython is

isとオブジェクトのアイデンティティのためのis notテストは、オペレータ:xはxとyが同じオブジェクトである場合にのみ、yはtrue です。

あなたがやるべきis使用したい場合はdocs

1

はあなたのインタプリタにこれらを入力してみてください:

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キーワードは、それが何をしているのか正確にわからなければ、いくつかの予期しない方法で動作する可能性があります。それは、あなたの実際のプログラムの外でそれを実験することは非常に良いアイデアだと言われています。