[英]None check preceding an isinstance check good practice?
在Python中执行isinstance
检查之前是否测试None
是否是一种好习惯? 例如:
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
要回答您的问题,不必进行a 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
代替。
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
>>>
它不会引起任何错误,所以我实际上更喜欢没有'is None'检查的版本,因为它的代码更少。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.