Discuss / Python / 返回函数

返回函数

Topic source

landingguymmm

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

#方法一,在内层函数使用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


  • 1

Reply