[新兵求助]关于内置函数是用'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: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]