Discuss / Python / 交作业顺便解疑

交作业顺便解疑

Topic source

啧啧ghz

#12 Created at ... [Delete] [Delete and Lock User]

学习了谢谢。 这里的list,有点像tuple中用list实现元素可更改


def createCounter():
    f = [0]
    print('闭包外--')
    def counter():
        print('闭包内--')
        f[0] = f[0] + 1        return f[0]
    return counter
 # 测试counterA = createCounter()
print(counterA(), counterA())
print(counterA())
counterB = createCounter()
print(counterB(), counterB())

# 输出结果:# 闭包外--# 闭包内--# 闭包内--# 1 2# 闭包内--# 3# 闭包外--# 闭包内--# 闭包内--# 1 2

闭包内打印与函数外打印的交替

SPqvq

#14 Created at ... [Delete] [Delete and Lock User]

这部分的内容讲的是真的简略,建议搜两三篇博客看看

3#的问题:内部作用域要修改全局/嵌套作用域的不可变变量时,需分别先用global/nonlocal声明,仅访问则不需要

7#:返回的内函数对象,反复调用当然只调用内函数。想调用外函数那就调用外函数啊

10#:。。看原文“另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()才执行”

12#:用list是因为list是可变变量,不需要nonlocal声明。Python2里没有nonlocal这样子就只能用list实现

(ps:上面仅是我的理解,因为也是刚学Python可能会有错还请指出)

SPqvq

#15 Created at ... [Delete] [Delete and Lock User]

(可变对象不是可变变量/kel


  • 1
  • 2

Reply