簡體   English   中英

python 嵌套 function,缺少 1 個必需的位置參數

[英]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 ,正如您所說,這需要gm

   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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM