关于return的疑问
例1:def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
funY()
例2:
def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
return funY()
为什么同样执行funX() ,例1没结果,例2却有结果呢 x的走向
例1:funX()→funY→funX→全局
例2:funX()→funY→funX
可以看出,由于例1没有把x return出来,故无结果
而例2返回到全局,至于有没有结果,如果你不用IDLE运行,照样没结果
return只是把数据返回出来
比如说在定义了funX()的基础上加上一句
a = funX()
print(a)
a = funX() 这里x一路返回到这个等号的右边,然后往左边赋值
如果没有print那是不可见的,IDLE可见应该只是为了方便调试。 水瓶座 发表于 2019-2-27 20:56
x的走向
例1:funX()→funY→funX→全局
例2:funX()→funY→funX
例1不是有return x 吗? 秃头的程序员 发表于 2019-2-27 21:10
例1不是有return x 吗?
你return x只是把x return到了funX
你可以把x当成在第二层(因有两个函数)
return一次,退出一层
页:
[1]