gpt4 book ai didi

python - 在一行 if 语句 python 中正确使用 * 运算符

转载 作者:太空狗 更新时间:2023-10-29 20:57:43 29 4
gpt4 key购买 nike

我想知道是否可以在一行中使用 * 运算符来实现以下功能:

if node['args'] != None:
return_val = funct(*node['args'])
else:
return_val = funct()

我以为我可以说

return_val = funct(*node['args'] if node['args'] != None else None)

但事实证明这和说的是一样的

if node['args'] != None:
return_val = funct(*node['args'])
else:
return_val = funct(*None)

这对 *None 没有任何意义。

我厌倦了将第一个选项括在括号中,但这只会抛出 SyntaxError: can't use starred expression here

return_val = funct((*node['args']) if node['args'] != None else None)

最佳答案

是的,您需要提供一个空序列,而不是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

但我认为您的 if -else 语句方法更可取。我只需要看一次,我就会立即知道发生了什么。有了条件表达式,我就得好好想想了。

此外,这是一个条件表达式,而不是“单行 if 语句”。

关于python - 在一行 if 语句 python 中正确使用 * 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46695522/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com