在python

时间:2019-01-16 20:03:19

标签: python function optional-parameters

类似的问题has been asked before,但我不知道我喜欢这个答案。您有一个父函数,它将调用子函数。

def parent(a):
   return child(a) * 2

def child(a, b=10, c=20):
   return a + b + c

如果我想让父方法公开bc,我可以做下面的事情。它可以工作,但是看起来很麻烦,因为我为此付出了很多(也许这暗示了其他问题)。

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)

是否有更好的方法(即更少的代码)来做到这一点?

1 个答案:

答案 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