如果此前已经有人提出过这个问题,我很抱歉,但我搜索了很久也没有找到 完全 符合我的问题的答案。基本上,使用 Python 2.7,我正在运行一系列地理处理工具的程序,这些工具取决于用户在脚本中调整的一系列 True/False 变量。
x = True
if x:
run function
然而,我现在发现x不需要字面上为“True”才能运行该函数。例如:
In: x = True
if x:
print True
Out: True
In: x = 123
if x:
print True
Out: True
In: x = 'False'
if x:
print True
Out: True
In: x = False
if x:
print True
Out:
因此,除了False之外的任何值似乎都会被认为是True的,这在如果使用 x == True 或 x is True 的情况下并非如此。由于PEP 8强烈建议仅使用 if x:变体,是否有人能解释一下为什么会出现这种行为?看起来 if x:更多是一个测试,“如果x不是False”或“如果x存在”。考虑到这一点,我认为在这种情况下应该使用 if x is True:,尽管PEP 8有所不同。