Python 如果 x 作为 y

Eld*_*mir 6 python syntax if-statement

我经常发现自己在做一些愚蠢的事情,比如

if some_function():
    self.value = some_function()
Run Code Online (Sandbox Code Playgroud)

这使得该函数执行两次。它将通过类似的方式纠正

value = some_function():
if value:
    self.value = value
Run Code Online (Sandbox Code Playgroud)

如果 Python 允许类似的事情那就太棒了

if some_function() as value:
    self.value = value
Run Code Online (Sandbox Code Playgroud)

节省了一些空间,而且非常清晰。我什至会说它看起来像Pythonic。

所以,我知道这不是有效的语法,但是是否有我不知道的类似构造?值得向 Python 软件基金会建议吗?

Ama*_*dan 3

Python 遵循“显式if优于隐式”的座右铭,通过强制条件为表达式,并使赋值不是表达式,故意禁止此类构造。你应该写

value = some_function():
if value:
    self.value = value
Run Code Online (Sandbox Code Playgroud)

(但是,它适用于 Ruby、C、JavaScript、Java...以及任何其他赋值为表达式的语言。)

  • @user3267581:不,`self.value`应该保持不变。`value` 是一个与它无关的临时变量。 (3认同)