我正在维护一个庞大的代码库,我在我的python代码中找到了类似的内容:
...
foo = bar(a, b, c) and foo
return foo
...
其中为foo分配了一个布尔值,并在此处首次声明。这意味着什么/这个目的是什么/这里发生了什么?
答案 0 :(得分:5)
Python像C一样进行短路评估。
这意味着在"和"如果左侧有效,则仅评估and
的右侧。
所以你的代码大致等同于:
x = bar(a, b, c)
if x:
foo = foo
else:
foo = x
return foo
当然,区别在于不使用变量x(因为不需要)。
这里需要注意的重要事实是,例如,如果将foo设置为" stringval"和bar(a,b,c)返回的东西可以被解释为True,而不是" stringval"将被退回。因此,与其他语言不同,布尔表达式可以具有非布尔结果。
答案 1 :(得分:-2)
与此相同:
if bar(a, b, c) and foo:
foo = True
else:
foo = False
return foo