Python一行if语句有两个动作

时间:2018-11-05 17:36:49

标签: python python-3.x if-statement

我正在尝试找到一种方法来在if语句中一行完成两个动作,我可以在if语句单线执行中找到很多答案来执行一个动作,但对此却没有。可能吗我尝试过类似的操作,但由于ValueError失败-无法解压缩太多值(预期2)。谢谢。

g, er = "id", "err" if no_of_errs <= 1 else "ppd", "ers"

1 个答案:

答案 0 :(得分:6)

Python正在像这样查看您的代码:

 g, er = ( "id" )  ,  ( "err" if no_of_errs <= 1 else "ppd" )   , ( "ers" )

要拆包的3件东西,只需2件即可打包。

错误的原因是操作员优先,您可以阅读很多冗长的文本here或在Google上搜索它,然后找到类似here的表格。


通过用括号使元组显式来解决此问题:

no_of_errs = 0
g, er = ("id", "err") if no_of_errs <= 1 else ("ppd", "ers")
print(g,er)

no_of_errs = 10
g, er = ("id", "err") if no_of_errs <= 1 else ("ppd", "ers")
print(g,er)

输出:

id err
ppd ers

使用显式元组,不再造成操作员混乱,并且可以正常工作。


google的关键字:operator priority precedence或其他类似字词