if语句合并成一行后为什么出错?
if values["-BOY-"]:
sex = '男'
else:
sex = '女'
sex = '男' if values["-BOY-"] else sex = '女'
合并成一行后为什么出错?
在 Python 中,你不能在三元表达式(条件表达式)中使用赋值语句(=)。这是语法错误。
错误原因:
你尝试将以下代码:
if values["-BOY-"]:
sex = '男'
else:
sex = '女'
合并成一行时,错误地写成了:
sex = '男' if values["-BOY-"] else sex = '女' # 错误!
问题在于 sex = '女' 是一个赋值语句,而三元表达式的 else 部分只能是一个表达式,不能是语句。
正确写法:
你应该直接在三元表达式的两侧提供值,而不是赋值语句:
sex = '男' if values["-BOY-"] else '女'
为什么?
- 三元表达式的语法是:
<true_value> if <condition> else <false_value> <true_value>和<false_value>都必须是表达式(能求值的代码片段),而不能是语句(如赋值、if语句等)。'男'和'女'是字符串字面量(合法的表达式),而sex = '女'是赋值语句,不合法。
总结:
如果你想用一行代码实现这个逻辑,正确的写法是:
sex = '男' if values["-BOY-"] else '女'

浙公网安备 33010602011771号