关于一点闭包的小问题
看以下代码,情景一可以执行,可是情景二红色字体部分修改为funY(),多了一个括号为什么就不行了呢 情景一:def funX():
x = 5
def funY():
nonlocal x
x = x + 1
return x
return funY
成功执行
temp = funX()
temp() 情景二:
def funX():
x = 5
def funY():
nonlocal x
x = x + 1
return x
return funY()
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
temp()
TypeError: 'int' object is not callable 你要去理解函数带括号和不带括号的区别
不带括号代表的是函数本身,更像是一种身份
带括号是函数做的事情
比如说print是打印员
print()是打印员打印东西 逃兵 发表于 2021-10-21 21:29
你要去理解函数带括号和不带括号的区别
不带括号代表的是函数本身,更像是一种身份
带括号是函数做的事情 ...
爱了爱了,我后来想清楚了,你这比喻也很好! muxuehan9201 发表于 2021-11-7 17:16
好兄弟 我还是没想清楚 求帮助
一定要注意缩进
我用情景一说明
def funX():
x = 5
def funY():
nonlocal x
x = x + 1
return x
return funY
temp = funX()
temp() #这里相当于return funY() muxuehan9201 发表于 2021-11-8 19:58
看了第二天的课后作业 搞明白了 哈哈
加油~
页:
[1]