LEEFEI571 发表于 2022-11-23 20:01:22

[新兵求助]关于内置函数是用'return 内置函数名'还是'内置函数名()'方式进行调用?

请教各位大神:

在<零基础入门学习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:11:43

本帖最后由 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() 函数
页: [1]
查看完整版本: [新兵求助]关于内置函数是用'return 内置函数名'还是'内置函数名()'方式进行调用?