3 solutions to createCounter()
Topic source优化了一下Solution 1:
def createCounter1():
li = [0]
def counter():
li[0] += 1
return li[0]
return counter
或者
def createCounter1():
li = [1]
def counter():
li.insert(0, li[0] + 1)
return li.pop()
return counter
我想问下,前面的 f1, f2, f3 为什么能带入;或者说这里的1、2、3怎么会带入到函数内的;fs又不是函数,它是list不是,list要带入不得这样的吗 f[1];
谢谢,前面那个讲解也没看明白
@胖紫爱吃肉
因为counterA
指向的不是createCounter()
,而是counter()
:
def counter():
li[0] += 1
return li[0]
li = [0]
不在这个函数里面,后续再怎么调用counterA()
都不会再执行这条语句。
同样的疑问,还是无法理解 在第一种方法里 在定义countA时, counterA = createCounter() 不就是理解为countA指向了counterA = createCounter()? 而在createCounter()函数里应该是顺序执行 既然是顺序执行的话 在第二次第三次调用的时候难道没有重新定义li=[0]? 求大神解释一下我在哪个环节理解错了
KonoNA7
Solution 1:
Solution 2:
Solution 3: