我做了几个布尔比较:
>>> (True or False) is True
True
>>> (True or False) == True
True
Run Code Online (Sandbox Code Playgroud)
这听起来像==
和is
是布尔值互换.
有时使用起来更清楚 is
我想知道:
是True
和False
python中预分配?
是bool(var)
始终返回相同True
(或False
与预分配)True
(或False
)?
它是安全的替代==
与is
比较布尔值?
这不是最佳实践.
我只是想知道真相.
如果以前曾经问过这个问题,我会道歉,但是我徒劳地搜索了我的确切问题的答案.基本上,使用Python 2.7,我有一个运行一系列地理处理工具的程序,取决于用户在脚本中调整的一系列True/False变量所需的内容,例如
x = True
if x:
run function
Run Code Online (Sandbox Code Playgroud)
但是,我现在发现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:
Run Code Online (Sandbox Code Playgroud)
因此,除False之外的任何值似乎都会计算为True,如果x == True或x为True,则不会出现这种情况.看作PEP 8强烈建议仅使用if x: variant,有人可以解释为什么会出现这种情况吗?似乎如果x:更像是"如果x不是假"或"如果x存在"的测试.考虑到这一点,我相信如果x是真的我应该使用:在这种情况下,尽管PEP 8必须说.
亲切的问候