在 Java 中,数字类型都来自 Number,所以我会使用
(x instanceof Number).
python 等价物是什么?
最佳答案
测试您的变量是否是 numbers.Number
的实例:
>>> import numbers
>>> import decimal
>>> [isinstance(x, numbers.Number) for x in (0, 0.0, 0j, decimal.Decimal(0))]
[True, True, True, True]
这里使用 ABCs并且适用于所有内置的类似数字的类,如果它们物有所值,也适用于所有第三方类(注册为 Number
ABC 的子类)。
但是,在许多情况下,您不必担心手动检查类型 - Python 是 duck typed并且混合一些兼容的类型通常是可行的,但是当某些操作没有意义时它会发出错误消息(4 - “1”
),因此很少需要手动检查。这只是一个奖金。您可以在完成模块时添加它,以避免在实现细节上纠缠他人。
这工作starting with Python 2.6 .在旧版本上,您几乎只能检查一些硬编码类型。
https://stackoverflow.com/questions/4187185/