小白发问:这两种表达为什么会导致不同的结果???
第一种:>>> def funx():
x = 5
def funy():
nonlocal x
x += 1
return x
return funy
>>> a = funx()
>>> a()
6
>>> a()
7
>>> a()
8
第二种:
>>> def funx():
x = 5
def funy():
nonlocal x
x += 1
return x
return funy()
>>> a = funx()
>>> a
6
>>> a
6
>>> a
6 第一种返回的是 一个 函数也就是 a = funx() 因为 funx() 返回的是 funy 所以 a = funy
然后每次a() 都是相当于在调用 funy()所以 每次都会 x += 1 导致x 每次增大 1
第二种 funx() 返回的是 funy()而 funy() 返回的是 x = 6
所以当你 a = funx() 就相当于 a = funy()又因为funy()返回的是x , x 又等于6 所以 funy() = 6
所以每次调用都是一个固定的值 6
Twilight6 发表于 2020-6-6 17:54
第一种返回的是 一个 函数也就是 a = funx() 因为 funx() 返回的是 funy 所以 a = funy
然后每次a() ...
哦哦明白啦!谢谢大神!
页:
[1]