首页 > 解决方案 > python嵌套函数,缺少1个必需的位置参数

问题描述

我从一开始就学习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”。

任何人都可以帮助我吗?谢谢

标签: python

解决方案


这是因为在第一个示例中,您同时填充了两个位置参数。那是在第 7 行中,当您将权重函数分配给 w 时,在第 8 行中,当您将 G 分配给 w 时,位置参数为 100。所以它返回 10*100。而在第二个代码中,您只需将 w_1 分配给具有位置参数 10 的权重函数,python 将其解释为用于占位符 m 并且缺少 g 的参数。因此你得到了错误。


推荐阅读