类似的问题has been asked before,但我不知道我喜欢这个答案。您有一个父函数,它将调用子函数。
def parent(a):
return child(a) * 2
def child(a, b=10, c=20):
return a + b + c
如果我想让父方法公开b
和c
,我可以做下面的事情。它可以工作,但是看起来很麻烦,因为我为此付出了很多(也许这暗示了其他问题)。
def parent(a, b=None, c=None):
kwargs = {}
if b is not None:
kwargs['b']=b
if c is not None:
kwargs['c']=c
return child(a, **kwargs)
是否有更好的方法(即更少的代码)来做到这一点?
答案 0 :(得分:3)
如果父级和子级都是您自己的函数,则可以将默认值定义为两个函数共享的常量。
B_DEF = 10
C_DEF = 20
def parent(a, b=B_DEF, c=C_DEF):
return child(a,b,c) * 2
def child(a, b=B_DEF, c=C_DEF):
return a + b + c