return 返回函数问题
def funX():x = 5
def funY():
nonlocal x
x += 1
return x
return funY()
a = funX()
print(a)
print(a)
print(a)
和这个为什么打出的结果不一样
def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
return funY
a = funX()
print(a())
print(a())
print(a())
a同样都是没有被重新赋值 一个返回的是一个具体的数值
一个返回的是一个函数能一样吗 本帖最后由 heidern0612 于 2020-6-23 16:13 编辑
第一个函数,相当于把x的地址给了a,所以a = funX(),也就相当于a = x ,x经函数运算后结果为6.
第二个函数,相当于把funY的地址给了a,所以a = funX(),也就相当于a =funY,Y经一次运算返回6,二次运算返回7,三次运算返回8.
两者不同的是,x经一次运算后已经有了值,所以这个值(6)对应的内存地址赋值给了x,a只是x的引用,再次调用的还是6的内存地址,而不是又经历了一次函数运算得出的。
第二个你return的是函数地址,你每调用它一次,它就运行一次,所以结果两者不一样。
页:
[1]