python学习返回函数(闭包)

时间:2022-04-13 22:39:46

任务:利用闭包返回一个计数器函数,每次调用它返回递增整数:

# 第一种方法:
def CreatCount():
    def f():
        n=0
        while True:
            n=n+1
            yield n
    return next(f())
L=CreatCount()
print(L)

# 第二个方法:
def createCounter():
    def f():
        n=0
        while True:
            n=n+1
            yield n
    sun = f()
    def counter():
        return next(sun)
    return counter
L=createCounter()
print(L())

# 第三种方法:
def createCounter():
    def f():
        n=0
        while True:
            n=n+1
            yield n
    def counter():
        return next(f())
    return counter
L=createCounter()
print(L())

三种方法殊途同归,都是使用yield来完成的