84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
def f(p, k): def g(): print(k) if k == 0: f(g, 1) else: p() f(None, 0)
我觉得在f(None, 0)执行后,执行到f(g, 1)后k应该是1,但为什么执行还是0.
f(None, 0)
f(g, 1)
k
1
0
认证高级PHP讲师
这应该属于闭包,我们可以把这段函数改一下
def f(k): def g(): print(k) return g a = 1 x = f(a) a = 2 x() # 打印出 # 1
这样会不会更好理解一些呢可以看看这篇博客,他在底层说明了闭包的原理Python闭包详解
这应该属于闭包,我们可以把这段函数改一下
这样会不会更好理解一些呢
可以看看这篇博客,他在底层说明了闭包的原理Python闭包详解