Python if(True或False)有时计算为False
我在下面的Python(2.7.3)脚本中遇到了一个奇怪的问题。 有时,当a=True和b=False时,后续if子句的计算结果为False,其中的代码将不会运行 当a、b或两者都为真时,它总是第一次起作用,但有时之后它会随机失败 有人能解释这种行为以及如何避免它吗?多谢各位Python if(True或False)有时计算为False,python,if-statement,evaluation,Python,If Statement,Evaluation,我在下面的Python(2.7.3)脚本中遇到了一个奇怪的问题。 有时,当a=True和b=False时,后续if子句的计算结果为False,其中的代码将不会运行 当a、b或两者都为真时,它总是第一次起作用,但有时之后它会随机失败 有人能解释这种行为以及如何避免它吗?多谢各位 while True: a = b = False a = func1() # Returns True or False b = func2() # Returns True or Fal
while True:
a = b = False
a = func1() # Returns True or False
b = func2() # Returns True or False
print a # Just for debugging..
print b # Just for debugging..
if(a or b):
print "Here we are.."
func3() # It may take hours until we return from here
time.sleep(45)
这可能与Python认为什么值是“真”有关。有时这些规则并不直观;您可能需要查看有关该主题的文档。为了帮助调试,您可以尝试而不是
print a
print b
差不多
print a
if a:
print "a is True"
print b
if b:
print "b is True"
这至少应该确认你说的是真/假是真/假。第一行是不相关的。它对脚本的执行没有影响。请给出一个示例,其中您认为
a或b
返回True
(ish)值,但如果语句未执行,则返回。您能否向我们展示“随机失败”的回溯?您是否打印了a
和b
为假的输出?您必须给我们代码来重现您所说的内容。如果你不这样做,就很难帮助你。似乎更有可能a或b
的计算结果是True
,因为事实上其中一个是True
。你能证明这个断言是错误的吗?换句话说,我认为问题在于func1()
或func2()
。问题标题中的陈述实际上是不可能的。如果python将语句求值为false,那么这两个变量的值在布尔上下文中都被视为false。每当您认为python解释器是错误的,请再想一想——可能是您错了。