我正在尝试编写一个简单的三元运算符,它在Ruby中看起来像这样:
0 > 1 ? alice+=1 : bob+=1
我用Python写成了这样:
alice += 1 if 0 > 1 else bob += 1
这个三元运算符会在bob+=1
处抛出无效语法错误。为什么会发生这种情况,我该如何使第二个操作符和第一个操作符执行相同的操作?
我正在尝试编写一个简单的三元运算符,它在Ruby中看起来像这样:
0 > 1 ? alice+=1 : bob+=1
我用Python写成了这样:
alice += 1 if 0 > 1 else bob += 1
这个三元运算符会在bob+=1
处抛出无效语法错误。为什么会发生这种情况,我该如何使第二个操作符和第一个操作符执行相同的操作?
三元表达式是一种表达式,你试图将其用作单行if-then-else
。你可以选择增量值,该值来自等式的右侧,例如:
alice += 1 if bob > 1 else 0
...但是你不能像这样更改分配的目标。 如果你真的需要这样做,你可以将一个自定义元组分配给LHS alice,bob
,但这似乎有些过度了。 只需使用自然的if
语句即可。
if 0 > 1:
alice += 1
else:
bob += 1
print(bob = 1)
会得到一个语法错误,而不是1
。 - Prune
bob += 1
是一个语句而不是表达式。 - mgilsonbob+=1
表达式?为什么alice+=1
是一个表达式,而bob+=1
却是一个语句? - d00medman