【发布时间】:2012-03-22 09:05:03
【问题描述】:
我知道 Python 中的条件表达式是 X if C else Y,但是我在使用它时遇到了一些问题。
我有两个代码要比较。
代码 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,其格式为“if C : X else: Y”,求值顺序为:
- C
- X
- 是
代码 2 抛出语法错误,原因可能是 p[1] 不存在。所以我猜格式“X if C else Y”的评估如下:
- X
- C
- 是
但这只是我的猜测。有谁知道代码 2 错误而代码 1 正确的真正原因?
【问题讨论】:
-
请注意,赋值是语句,不能出现在表达式上下文中。这就是代码 2 中错误的原因。
标签: python conditional-operator