1

Pythonで変数の型が特定の種類かどうかを確認したい。たとえば、varxが int かどうかを確認したい。

>>x=10
>>type(x)
<type 'int'>

しかし、どうすればそれらのタイプを比較できますか。これを試しましたが、うまくいかないようです。

if type(10)== "<type 'int'>":
    print 'yes'

これどうやってするの ?

4

3 に答える 3

4

あなたの例は次のように書くことができます:

if type(10) is int: # "==" instead of "is" would also work.
    print 'yes'

ただし、正確に希望どおりに機能しない場合があることに注意してください。たとえば、(そのような数値のタイプである)がではないため、単にの代わりに、10Lまたはそれより大きい数値を書き込んだ場合、yesは出力されません。sys.maxint10longint

もう1つの方法は、Martijnがすでに提案しているように、isinstance()組み込み関数を次のように使用することです。

if isinstance(type(10), int):
    print 'yes'

insinstance(instance, Type)インスタンスのタイプがから派生している場合Trueだけでなく、も返します。したがって、これのサブクラスはとに対しても機能するためです。type(instance) is TypeTypeboolintTrueFalse

ただし、一般的には特定のタイプをチェックしない方が良いですが、機能については必要です。つまり、コードが型を処理できない場合、型に対してサポートされていない操作を実行しようとすると、自動的に例外がスローされます。

ただし、整数や浮動小数点数などを別の方法で処理する必要がある場合は、が、、、またはこのクラスから派生したユーザー定義型であるかどうかを評価する(needs)を確認することをお勧めしisinstance(var, numbers.Integral)ますimport numbers標準の型階層と[モジュール]に関するPythonのドキュメントを参照してください。Truevarintlongboolnumbers

于 2013-03-03T16:02:24.400 に答える
4

isinstance()関数を使用して、特定のタイプをテストします。

isinstance(x, int)

isinstance()テストする単一の型または型のタプルのいずれかを取ります。

isinstance(x, (float, complex, int))

たとえば、一連の異なる数値型をテストします。

于 2013-03-03T15:08:00.603 に答える
0

次の方法を使用できます。

>>> isinstance('ss', str)
True
>>> type('ss')
<class 'str'>
>>> type('ss') == str
True
>>> 

整数 - >整数

float -> 浮動小数点値

リスト -> リスト

タプル -> タプル

辞書 -> 辞書

クラスの場合は少し異なります: 古い型のクラス:

>>> # We want to check if cls is a class
>>> class A:
        pass
>>> type(A)
<type 'classobj'>
>>> type(A) == type(cls)  # This should tell us

新しい型クラス:

>>> # We want to check if cls is a class
>>> class B(object):
        pass
>>> type(B)
<type 'type'>
>>> type(cls) == type(B)  # This should tell us


>>> #OR
>>> type(cls) == type # This should tell us
于 2018-08-19T18:16:00.080 に答える