开发者社区 问答 正文

pylint讨论带有赋值表达式的三元运算符

我有一些这样的代码:

return (
    (1 / a)
    if (a := foo())
    else 0
)

我的pylint对此进行争论是因为“在赋值之前使用变量'a'”,甚至求值顺序也应该是a:= foo(),然后是1 / a0。我尝试了pip install --upgrade pylint,但是似乎pylint仍然不同意。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 20:18:53 365 分享 版权
1 条回答
写回答
取消 提交回答
  • 好的,我发现这是Pylint的问题:

    https://github.com/PyCQA/pylint/issues/3347

    “ pylint可以解析海象运算符,但我们实际上尚未实现对它的支持。” (1月21日)

    无论如何,我将代码修改为一些等效版本,这些版本不会导致“在分配之前使用变量”,例如:

    if (a := foo()):
        return 1 / a
    else:
        return 0
    

    回答来源:stackoverflow

    2020-03-23 20:18:56
    赞同 展开评论
问答地址: