【发布时间】:2014-01-21 06:51:36
【问题描述】:
我在使用 Python (2.7.3) 脚本时遇到了一个奇怪的问题。 有时,例如a = True and b = False 随后的 if 子句的计算结果为 False,其中的代码将不会运行。
当 a、b 或两者都为真时,它总是第一次工作,但有时后来它随机失败。
谁能解释这种行为以及如何避免它?谢谢。
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)
【问题讨论】:
-
第一行无关紧要。它与脚本的执行无关。请举例说明您认为
a or b返回True(ish) 值但您的if语句未执行。 -
你能告诉我们“随机失败”的回溯吗?您是否在
a和b为假的地方打印了输出? -
您必须向我们提供代码才能重现您所说的内容。如果你不这样做,就很难为你提供帮助。
-
a or b似乎更有可能评估为True,因为其中之一实际上是True。你能证明这个断言是错误的吗?也就是说,我认为问题出在func1()或func2()。 -
您的问题标题中的陈述实际上是不可能的。如果 python 将该语句评估为 false,则两个变量都有一个在布尔上下文中被视为 false 的值。每次你认为python解释器错了,再想一想——很可能是你错了。
标签: python if-statement evaluation