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 软件基金会建议吗?
Python 遵循“显式if优于隐式”的座右铭,通过强制条件为表达式,并使赋值不是表达式,故意禁止此类构造。你应该写
value = some_function():
if value:
self.value = value
Run Code Online (Sandbox Code Playgroud)
(但是,它适用于 Ruby、C、JavaScript、Java...以及任何其他赋值为表达式的语言。)