""" 实现计数器统计函数调用次数 """ def createCounter(): """ 方法1:list的原理类似C语言的数组和指针,不受作用域影响 直接改变值对应的地址。也就是说不是改变值的引用,而是永久改变值本身 """ L=[0] def counter(): L[0]+=1 return L[0] return counter def createCounter(): """ 方法2:使用global扩大变量作用域 """ global n n=0 def counter(): global n n+=1 return n return counter def createCounter(): """ 方法3:使用nonlocal声明内层函数变量,使其能修改外层函数的变量 """ n=0 def counter(): nonlocal n n+=1 return n return counter def createCounter(): """ 方法4:使用生成器在外层函数创建生成器对象,在内层函数调用next() """ def count_generator(): n=0 while True: n+=1 yield n # 调用生成器函数创建生成器对象一定要在外层函数进行 temp=count_generator() def get_num(): return next(temp) return get_num
第一种方法把return L[0] 改成return L为什么就错了呢
牛批啊,因为L代表的是列表,L[0]代表的是列表中的第一个元素
Sign in to make a reply
凡响skyline