2024-04-19 02:56:46 发布
网友
在Java中,数字类型都是从数字派生的,因此我将使用
(x instanceof Number).
python的等价物是什么?
测试变量是否为^{}的实例:
>>> import numbers >>> import decimal >>> [isinstance(x, numbers.Number) for x in (0, 0.0, 0j, decimal.Decimal(0))] [True, True, True, True]
这将使用ABCs,并将适用于所有内置的类,也适用于所有第三方类(如果它们值盐的话)(注册为NumberABC的子类)。
Number
然而,在许多情况下,您不必担心手动检查类型——Python是duck typed,并且混合一些兼容的类型通常可以工作,但是当某些操作没有意义时(4 - "1"),它会显示一条错误消息,因此很少真正需要手动检查。这只是奖金。您可以在完成模块时添加它,以避免用实现细节困扰其他人。
4 - "1"
这是可行的starting with Python 2.6。在旧版本中,您几乎仅限于检查一些硬编码类型。
Python2: isinstance(x, (int, long, float, complex)) and not isinstance(x, bool)
isinstance(x, (int, long, float, complex)) and not isinstance(x, bool)
Python3: isinstance(x, (int, float, complex)) and not isinstance(x, bool)
isinstance(x, (int, float, complex)) and not isinstance(x, bool)
使用numbers模块中的Number来测试isinstance(n, Number)(从2.6开始可用)。
numbers
isinstance(n, Number)
isinstance(n, numbers.Number)
在这里,它与各种数字和一个非数字一起工作:
>>> from numbers import Number ... from decimal import Decimal ... from fractions import Fraction ... for n in [2, 2.0, Decimal('2.0'), complex(2,0), Fraction(2,1), '2']: ... print '%15s %s' % (n.__repr__(), isinstance(n, Number)) 2 True 2.0 True Decimal('2.0') True (2+0j) True Fraction(2, 1) True '2' False
当然,这与duck类型相反。如果您更关心一个对象的行为方式,而不是它是什么,那么像有一个数字一样执行操作,并使用异常来告诉您其他情况。
测试变量是否为^{} 的实例:
这将使用ABCs,并将适用于所有内置的类,也适用于所有第三方类(如果它们值盐的话)(注册为
Number
ABC的子类)。然而,在许多情况下,您不必担心手动检查类型——Python是duck typed,并且混合一些兼容的类型通常可以工作,但是当某些操作没有意义时(
4 - "1"
),它会显示一条错误消息,因此很少真正需要手动检查。这只是奖金。您可以在完成模块时添加它,以避免用实现细节困扰其他人。这是可行的starting with Python 2.6。在旧版本中,您几乎仅限于检查一些硬编码类型。
Python2:
isinstance(x, (int, long, float, complex)) and not isinstance(x, bool)
Python3:
isinstance(x, (int, float, complex)) and not isinstance(x, bool)
使用
numbers
模块中的Number
来测试isinstance(n, Number)
(从2.6开始可用)。在这里,它与各种数字和一个非数字一起工作:
当然,这与duck类型相反。如果您更关心一个对象的行为方式,而不是它是什么,那么像有一个数字一样执行操作,并使用异常来告诉您其他情况。
相关问题 更多 >
编程相关推荐