【发布时间】:2013-12-27 09:32:58
【问题描述】:
我知道 AND 运算符优先于 OR 运算符。我也相信,就像在 C/CPP 中一样,这些运算符的关联性是从左到右的(尽管它似乎对我的问题并不重要)。
我在 Python 2.7.1 中运行以下代码:
案例一:
我有三个功能:
def f(): print 3; return True
def g(): print 4; return False
def h(): print 5; return False
当我运行以下命令时
f() and g() or h()
我明白了
3
4
5
False
这很好(我所期望的)。
案例 2:
如果我将函数更改为:
def f(): print 3
def g(): print 4
def h(): print 5
我得到相同的命令:
3
5
案例 3:
如果我将命令更改为
f() and (g() or h())
我只得到:
3
我知道在最后两个示例中,函数实际上并没有返回布尔值,但是 - 我不理解这种行为。似乎不一致:
我们将函数 f(),h(),g() 称为 True 还是 False 或其他什么(什么?)?
为什么在第二种情况下运行的是 h() 而不是 g()?
为什么在最后一种情况下它们(g 和 h)都没有运行?
【问题讨论】:
标签: python operators operator-precedence