|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- # 第一版运行
- def funX():
- x = 5
- print(x,'\'')
- print("Running X")
- def funY():
- nonlocal x
- x += 1
- print("Running Y")
- return x
- return funY
- print(funX()())
- print(funX()())
- print(funX()())
- print()
- a = funX()
- print(a())
- print(a())
- print(a())
复制代码
运行结果:
5 '
Running X
Running Y
6
5 '
Running X
Running Y
6
5 '
Running X
Running Y
6
5 '
Running X
Running Y
6
Running Y
7
Running Y
8
我这前半段代码用的print(funx()()),三次答案都是6,而且都有Running X和Running Y的过程,但用了print(a()())后,只有第一次结果有Running X剩下都是只有Running Y,这是为什么?
还有接下来这段
- # 第二版运行
- def funX():
- x = 5
- print(x,'\'')
- print("Running X")
- def funY():
- nonlocal x
- x += 1
- print("Running Y")
- return x
- return funY()
- print(funX())
- print(funX())
- print(funX())
- print()
- a = funX()
- print(a)
- print(a)
- print(a)
复制代码
运行结果:
5 '
Running X
Running Y
6
5 '
Running X
Running Y
6
5 '
Running X
Running Y
6
5 '
Running X
Running Y
6
6
6
这一段我把return funY改成了renturn funY(),后面依然有a=funX()的复制,为什么这次的x=5就重新定义了,三次结果都是6,但依然只有第一次结果有Running X剩下都是只有Running Y
请问这个return funX加不加括号的意义是什么,为啥差距这么大,求大佬解释,谢谢! |
|