我知道Python中的条件表达式是X,如果C else Y,但我在使用它时遇到了一些问题。Python中条件表达式的评估顺序是什么?
我有两个代码进行比较。
代码1:
def fun(p):
if len(p) >= 2:
p[1] = 'Ok'
else:
p.append('Ok')
p = [1]
fun(p)
print p
的代码1输出:
[1, 'Ok']
代码2:
def fun(p):
(p[1] = 'Ok') if (len(p) >= 2) else p.append('OK')
p = [1]
fun(p)
print p
输出的代码2:
(p[1] = 'Ok') if (len(p) >= 2) else p.append('OK')
^
SyntaxError: invalid syntax
我知道在代码1,其格式为: “如果C:X其它:Y”,评价的顺序是:
- Ç
- X
- ÿ
代码2抛出一个语法错误,其原因可以是p [1]不存在。所以我想,格式为 “X如果C别的Y” 被评价为如下:
- X
- Ç
- Ÿ
不过,这只是我的猜测。有没有人知道代码2错误而代码1正确的真正原因?
请注意,赋值是语句,不能出现在表达式上下文中。这是代码2中出现错误的原因。 – 2012-03-22 09:07:09