[英]python nested function, missing 1 required positional argument
我從頭學習python。 剛開始學習嵌套函數。 這些天我得到了一些很好的代碼,如下所示:
def w(m , g):
return m * g
def weight(g):
def cal_mg(m):
return m * g
return cal_mg
w = weight(10)
G = w(100)
G2 = w(50)
print(G)
它給了我“1000”,我對此沒有任何問題。 當我開始學習這個時,我寫道:
def w(m, g):
return m*g
def weight(g):
def cal_mg(m):
return m*g
return cal_mg
w_1=weight(10)
G=w(100)
print(G)
我得到“TypeError:w() 缺少 1 個必需的位置參數:'g'”。 我覺得我在輸入完全相同的代碼。 為什么它一直在詢問另一個論點“g”。
任何人都可以幫助我嗎? 謝謝
那是因為您也引用了 function w
,正如您所說,這需要g
和m
。
def w(m, g):
return m*g
def weight(g):
def cal_mg(m):
return m*g
return cal_mg
w_1=weight(10)
G=w(100, 100)
print(G)
將是一個可能的解決方案; 這樣您就可以滿足所有要求。 Function weight
只需要``g`。
這是因為在第一個示例中,您同時填充了位置 arguments。 那是在第 7 行中,當您將權重 function 分配給 w 時,在第 8 行中,當您將 G 分配給 w 時,位置參數為 100。所以它返回 10*100。 而在第二個代碼中,您只需將 w_1 分配給權重 function,位置參數為 10,python 將其解釋為用於占位符 m 並且缺少 g 的參數。 因此你得到了錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.