我想知道是否可以在oneline上使用*运算符来实现以下功能:
if node['args'] != None:
return_val = funct(*node['args'])
else:
return_val = funct()
Run Code Online (Sandbox Code Playgroud)
我想我可以说
return_val = funct(*node['args'] if node['args'] != None else None)
Run Code Online (Sandbox Code Playgroud)
但事实证明这与说法相同
if node['args'] != None:
return_val = funct(*node['args'])
else:
return_val = funct(*None)
Run Code Online (Sandbox Code Playgroud)
这没有任何意义*None.
我厌倦了括号中的第一个选项,但这只是抛出 SyntaxError: can't use starred expression here
return_val = funct((*node['args']) if node['args'] != None else None)
Run Code Online (Sandbox Code Playgroud)
是的,您需要提供一个空序列,而不是None:
>>> def f(*args):
... for arg in args:
... print(arg)
...
>>> x = None
>>> y = ('a','b')
>>> f(*(y if x is not None else ()))
>>> x = object()
>>> f(*(y if x is not None else ()))
a
b
Run Code Online (Sandbox Code Playgroud)
但我认为你的if -else陈述方式更可取。我只需要看一次,我就能立即知道发生了什么。有了条件表达式,我就得考虑一下了。
另外,这是一个条件表达式,而不是“单行 if 语句”。
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |