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


def createCounter():
    def f():
        n=0
        while True:
            n=n+1
            yield n
    sun = f()
    def counter():
        return next(sun)
    return counter

 

创造生成器的方法里,为啥不能直接去调用f()呢,为什么要定义sun = f()

createCounter 返回的是 counter 这个函数,而此时 f() 并没有执行并返回一个生成器对象。所以每次 createCounter() 都会得到一个 counter 函数,而执行 counter(),都会执行 f() 而生成一个新的生成器对象

变向的理解,s1 = f(), s2 = f(),但是s1 == s2 是false


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM