在Python中None
检查之前测试不isinstance
是不错的做法?例如:
if x is not None and isinstance(x, (int, float)):
# Some code over here
pass
或者我可以不用,这是否足够?
if isinstance(x, (int, float)):
# Some code over there
pass
答案 0 :(得分:2)
要回答您的问题,不需要进行is not None
检查,因为 -
>>> isinstance(None, (int, float))
False
意思是,如果x
为None
,那么isinstance
条件无论如何都会返回False
,使x is not None
检查变得多余。总而言之,
if isinstance(x, (int, float)):
...
同样适用。
此外,如果您想测试对象本质上是否为数字,更简单的方法是使用numbers
模块 -
import numbers
if isinstance(x, numbers.Number):
...
请注意numbers.Number
测试层次结构根目录中的所有数字对象。这也包括复数,所以如果这不是您想要的,您可以使用numbers.Real
来测试numbers.Rational
。
答案 1 :(得分:0)
Python 2.7.14 (default, Sep 20 2017, 01:25:59)
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> isinstance(None, (int, float))
False
>>>
它没有引起任何错误,因此我实际上更喜欢没有'是No'检查,因为它只是更少的代码。