【问题标题】:Exposing optional arguments of a nested method in python在 python 中公开嵌套方法的可选参数
【发布时间】:2019-06-10 23:31:20
【问题描述】:

一个类似的问题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)

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

【问题讨论】:

  • 在哪里之前被问过?悬赏该问题以寻求新答案。
  • 为什么不把 parent() 中 b 和 c 的默认值设置为 child() 中 b 和 c 的默认值呢?然后你可以打电话给child(a=a, b=b, c=c)
  • 我可能弄错了,但现在父母和孩子不一样吗? parent = child 有完全相同的功能吗?
  • @9769953 child 是之前定义的。 child 的默认值是有意义的。如果其他方法想调用孩子怎么办?我希望他们也可以访问那些合理的默认值
  • 看来这毕竟不是重复的。 OP 知道解决方案,但它看起来不太好。此外,这个问题更通用、更容易理解

标签: python function optional-parameters


【解决方案1】:

如果 parent 和 child 都是您自己的函数,那么您可以将默认值定义为两个函数共享的常量。

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

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2015-12-26
    • 2021-05-13
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2011-01-26
    • 2021-12-17
    • 2013-05-23
    相关资源
    最近更新 更多