Python if(True或False)有时被评估为False

时间:2014-01-21 06:51:36

标签: python if-statement evaluation

我遇到了一个跟随Python(2.7.3)脚本的奇怪问题。 有时例如a = True和b = False后续if子句的计算结果为False,其中的代码将不会运行。

当a,b或两者都为True时,它总是第一次起作用,但有时候稍后它会失败。

任何人都可以解释这种行为以及如何避免它吗?谢谢。

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)

1 个答案:

答案 0 :(得分:2)

它可能与Python认为是" True"的价值有关。有时这些规则并不直观;您可能需要查看有关该主题的文档。为了帮助调试,也许您可​​以尝试而不是

print a
print b

类似

print a
if a:
    print "a is True"
print b
if b:
    print "b is True"

这至少应该确认你这是真/假是*实际上是*真/假。