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)
它打?。?/p>
None
20
30
因此,您要么傳遞一個覆蓋 10 的值,要么不傳遞,并使用callingfuncx的默認值覆蓋 10 ,在本例中為None。
添加回答
舉報