【发布时间】:2013-12-23 15:06:11
【问题描述】:
抱歉,如果以前有人问过这个问题,但我徒劳地寻找我的 exact 问题的答案。基本上,使用 Python 2.7,我有一个运行一系列地理处理工具的程序,这取决于用户在脚本中调整的一系列 True/False 变量所要求的内容,例如
x = True
if x:
run function
但是,我现在发现 x 不需要是字面上的“真”,函数才能运行。例如:
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 为 True 则不会出现这种情况。鉴于 PEP 8 强烈建议仅使用 if x: 变体,任何人都可以解释为什么会发生这种行为吗?似乎 if x: 更像是对“如果 x 不是 False”或“如果 x 存在”的测试。考虑到这一点,我相信我应该使用 if x is True: 在这种情况下,不管 PEP 8 怎么说。
【问题讨论】:
标签: python if-statement boolean