20讲中关于闭包例子的一点疑问
在零基础学习python第20讲《内嵌和闭包》中,视频里关于闭包举了一个例子:def funX(x):
def funY(y):
return x * y
return funY
我试了一个下,如果把最后一句funY改为funY(y),执行会提示出错。提示y未定义。
那我是不是可以这么理解,如果使用一个内嵌函数做为返回值,就只能写函数名(funY),而不能带参数(funY(y))? 可以这么理解吧
因为funX的返回值时一个函数
也就是意味着,a=funX(5)这一调用语句得到的返回值a也是一个函数
b=a(6)这样的写法就相当于也是一个调用语句 未必,试试这个代码
def funX(x):
def funY(y):
return x * y
return funY
print(funX(3)(5)) jackz007 发表于 2021-2-17 23:33
未必,试试这个代码
楼主说的是return不是print 当返回值为funY时,返回的是一个可传参函数
当返回值为funY(y)时,返回的是函数执行结果
这种情况只能通过给定默认参数解决
def funX(x):
def funY(y):
return x * y
return funY(y=10) 感谢各位,明白了
页:
[1]