Python 更像蟒蛇的测试方法是“无”
测试Python 更像蟒蛇的测试方法是“无”,python,Python,测试变量==None的哪种方法更适合python 如果变量为: 或 如果var不是None ? 我个人更喜欢初级读物。但后者更为明确。 但是为了什么?初学者程序员-这应该在生产级软件中假设吗?如果var不是None,则使用明确检查: 理由 does_not_work = 0 if does_not_work: print("Works - is not none") else: print("Is None ... or not?") 看 简单测试检查真实性-不None如果
变量==None
的哪种方法更适合python
如果变量为:
或
如果var不是None
?
我个人更喜欢初级读物。但后者更为明确。
但是为了什么?初学者程序员-这应该在生产级软件中假设吗?如果var不是None,则使用
明确检查:
理由
does_not_work = 0
if does_not_work:
print("Works - is not none")
else:
print("Is None ... or not?")
看
简单测试检查真实性-不
None
如果None
-真实性很重要,并且您可能会收到一个不应同等对待的错误值,您必须使用不是None
。但如果你只是测试None
与“其他一些保证真实的价值”的对比,那么这实际上是个人偏好
例如,当测试regex
.match
调用的结果时,如果matchobj:和如果matchobj不是None:
都可以match
对于失败的匹配或保证的truthy match对象返回None
,因此这主要是个人风格的问题if matchobj:
在显微镜下速度更快,但不足以有意义地衡量决策。这些根本不是等价的陈述if var:
将跳过除None
-任何数字类型的零和空字符串或序列以外的许多值的执行。Python的理念是“显式优于隐式”,因此这几乎是Python式的。啊,见鬼,是的。如果不键入变量,这就是问题所在。在我的例子中,我看到的是一个datetime
,如果一些try-except
失败,它可能是空的。self注意-不要混合使用静态类型语言和python。@r.ook如果某个变量是您的意思:
就可以了。@StevenRumbalski绝对可以了-只要您测试的是bool
值。如果某个变量:,那么缩写形式肯定有一些用例,但是在OP的情况下,的显式测试不是None
可能会更有用。@El没有“Falsy”DateTime对象,所以您可以使用这两个对象。但对于整数、字符串、列表等,有falsy计算值,所以如果需要将它们区分为None和falsy,请不要在那里使用它。我上面的问题来自您提到的第一种情况,它是必须设置的datetime变量的错误处理,或者如果出现故障,则为None。