在lua中,我可以表达如下:
function f(arg)
N = arg or 0
print(N)
end
F()
F(5)
Output:
--> 0
--> 5
有没有办法在python中做到这一点。。。而不是:
arg = None
If arg:
N = arg
else:
N = 0
--> n = 0
-- set arg to 5
--> n = 5
只是好奇,我喜欢Lua的1行实现。另一个对我来说有点刺耳。
您可以使用以下方法或其他方法:
def f(arg=None):
N = arg or 0
print(N)
f() # 0
f(5) # 5
只要arg为False或None,就会选择第二个选项。https://docs.python.org/3/library/stdtypes.html#boolean-操作与否
编辑:您正在寻找下一个
N = next(iter(args), 0)
args
是传递给函数的所有附加参数的元组。您可以将next
与iter
结合使用来迭代这些参数,并选择下一个/第一个(如果存在(。如果不是,则会将默认值分配给N(在本例中为0(。它类似于N = args[0] if len(args) > 0 else 0
,但没有检查。例如,这里有更多的解释。