如何将空参数传递给python函数?

Nik*_*Nik 5 python python-3.x

这是工作代码:

def g(y=10):
    return y**2

def f(x,y=10):
    return x*g(y)

print(f(5)) #->500
Run Code Online (Sandbox Code Playgroud)

但是,假设我们不想记住并将关键字参数的默认值复制y到外部函数的定义中(特别是如果有多层外部函数).在上面的例子中,它意味着我们想要使用已经定义的参数g.

一种方法:

def f(x,y=None):
    if y==None: return x*g()
    else: return x*g(y)
Run Code Online (Sandbox Code Playgroud)

但有没有更清洁的方法来做同样的事情?就像是:

def f(x,y=empty()):
    return x*g(y)
Run Code Online (Sandbox Code Playgroud)

dor*_*ian 6

有趣的问题!这是另一种可能性,但这需要将第二个参数作为命名参数提交。

>>> def g(y=10):
...     return y**2
... 
>>> def f(x, **kwargs):
...     return x * g(**kwargs)
... 
>>> f(5)
500
>>> f(5, y=0)
0
Run Code Online (Sandbox Code Playgroud)