|  | 
 
| 
请教各位大神:
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 在<零基础入门学习Python>第6章-<内置函数>中,在第74页的第一个例子:
 def fun1():
 print('fun1()正在被调用')
 def fun2():
 print('fun2()正在被调用')
 fun2()
 其中内置函数fun2是被外部函数fun1通过fun2()方式进行调用.
 
 而第756页闭包中第一个例子:
 def funX(x):
 def funY(y):
 return x*y
 return funY
 内置函数funY是被外部函数funX通过return funY方式进行调用,这时的return语句到底起了什么作用?
 如果把return funY修改为funY(),当给外部函数funX赋值temp = funX(8)时,系统会报错,提示TypeError: funY() missing 1 required positional argument: 'y',这又是为何?
 
 或许能不能这么理解,当内部函数体内使用了return语句,外部函数对内部函数进行调用时,也必须使用return语句进行调用?
 
 盼各位大神指点迷津,谢谢!!!
 
 本帖最后由 jackz007 于 2022-11-23 20:23 编辑 
复制代码def funX(x):
    def funY(y):
        return x*y
    return funY          # 返回内嵌函数 funY() 的调用地址
f = funX(5)              # f 为 以 x = 5 所初始化的内嵌函数 funY() 调用地址
print(f(8))              # 以 x = 5,y = 8 调用 funX() 的内嵌函数 funY()
print(f(9))              # 以 x = 5,y = 9 调用 funX() 的内嵌函数 funY()
print(f(10))             # 以 x = 5,y = 10 调用 funX() 的内嵌函数 funY()
print(funX(5)(8))        # 以 x = 5,y = 8 调用 funX() 的内嵌函数 funY()
        关于函数调用地址赋值可以参考这个例子:
 复制代码a = input                    # 把函数调用地址赋值给普通变量
b = print                    # 把函数调用地址赋值给普通变量
name = a('输入您的姓名:')   # 通过变量 a 调用 input() 函数
b('您好', name)              # 通过变量 b 调用 print() 函数
 | 
 |