我正试图找到一种方法,在一行if语句中完成两个操作,我可以在if语句的一行中找到很多执行单个操作的答案,但不是这样。这可能吗?我尝试过类似的操作,但由于ValueError失败-太多的值无法解包(应为2(。谢谢
g, er = "id", "err" if no_of_errs <= 1 else "ppd", "ers"
Python正在这样查看您的代码:
g, er = ( "id" ) , ( "err" if no_of_errs <= 1 else "ppd" ) , ( "ers" )
3件东西需要打开包装,只有2件可以装进去。
错误背后的原因是运算符优先级,您可以在此处阅读大量长文本,也可以在谷歌上搜索并找到类似于此处的表格。
通过用括号显式表示元组来修复它:
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
有了显式元组,就不会再混淆运算符了,而且它很有效。
谷歌关键词:operator
priority
precedence
或smth相似