【问题标题】:Python one line if statement with two actionsPython 一行 if 语句有两个动作
【发布时间】:2018-11-05 17:36:49
【问题描述】:

我正在尝试找到一种方法来在一条 if 语句中完成两个操作,我可以找到很多答案来在 if 语句单行中执行单个操作,但不是为了这个。甚至可能吗?我尝试了类似的方法,但因 ValueError 失败 - 解包的值太多(预期为 2)。谢谢。

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

【问题讨论】:

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


    【解决方案1】:

    Python 会这样查看您的代码:

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

    3 个东西要拆包,只有 2 个要打包。

    错误背后的原因是操作员优先级,您可以阅读大量冗长的文本here 或谷歌搜索并找到类似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 或类似

    【讨论】:

    • 非常感谢您的解释,感谢@Patrick Artner
    猜你喜欢
    • 2017-08-12
    • 2012-09-11
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多