2 回答
TA贡献1856条经验 获得超5个赞
大多数情况下,为此使用可选的 varargs ( *args) 和/或(最好是 imho)可选的关键字 args ( **kwargs)。假设callingfunc()还需要一些自己的参数y:
def subfunc(x=10):
""" Do something with x
:param x: used to do something (default: 10)
"""
print("subfunc({})".format(x))
def callfunc(y, **kwargs):
""" Do something with `y` and calls `subfunc()`
:param y: something to do something with
:param kwargs: will be passed to `subfunc()` (cf `subfunc() doc)`
"""
print("callfunc({})".format(y))
subfunc(**kwargs)
callfunc(42)
callfunc(42, x="bar")
这让您很容易知道哪些是callfunc()自己的参数,哪些仅用于subfunc(),并且如果subfunc()有多个参数,则比您的解决方案更容易。
TA贡献1784条经验 获得超2个赞
这个答案总是覆盖subfunc x参数,因为没有subfunc定义的x参数就无法调用 。所以这是不对的。
我没有修复它,因为布鲁诺的答案已经很好了。
你可以这样写:
def subfunc(x=10):
print(x)
def callingfunc(x=None):
subfunc(x)
callingfunc()
callingfunc(20)
callingfunc(30)
它打印:
None
20
30
因此,您要么传递一个覆盖 10 的值,要么不传递,并使用callingfuncx的默认值覆盖 10 ,在本例中为None。
添加回答
举报