#方法一,在内层函数使用nonlocal定义一个非局部变量,需补充nonlocal、global知识。
fs = []
def createCounter():
n = 0
def counter():
nonlocal n # 声明变量n非内部函数的局部变量,否则内部函数只能引用,一旦修改会视其为局部变量,报错“局部变量在赋值之前被引用”。(之前缺少了这一步怎么运算都不对,谢谢评论区的大佬)
n = n + 1
return n
return counter
#方法二,使用生成器
def num_generator():
num = 0
while True:
num += 1
yield num
int_num = num_generator()
return next(int_num)
Sign in to make a reply
landingguymmm
#方法一,在内层函数使用nonlocal定义一个非局部变量,需补充nonlocal、global知识。
fs = []
def createCounter():
n = 0
def counter():
nonlocal n # 声明变量n非内部函数的局部变量,否则内部函数只能引用,一旦修改会视其为局部变量,报错“局部变量在赋值之前被引用”。(之前缺少了这一步怎么运算都不对,谢谢评论区的大佬)
n = n + 1
return n
return counter
#方法二,使用生成器
def createCounter():
def num_generator():
num = 0
while True:
num += 1
yield num
int_num = num_generator()
def counter():
return next(int_num)
return counter