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

问题描述 投票:0回答:1

我有一些这样的代码:

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

我的pylint对此进行争论是因为“在赋值之前使用变量'a'”,甚至评估顺序也应该首先是a := foo(),然后是1 / a0。我尝试过pip install --upgrade pylint,但似乎pylint仍然不同意这一点。我只想确保最新版本的pylint是否可以通过此?

python python-3.x pylint python-3.8
1个回答
0
投票

[确定,我发现这是Pylint的问题:

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

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

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

if (a := foo()):
    return 1 / a
else:
    return 0
)
© www.soinside.com 2019 - 2024. All rights reserved.