这是工作代码:
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)
有趣的问题!这是另一种可能性,但这需要将第二个参数作为命名参数提交。
>>> 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)
| 归档时间: |
|
| 查看次数: |
17921 次 |
| 最近记录: |