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