python闭包实现函数自增器

def autoIncrement():
    i=[0]    # 这里将计数变量保存到引用对象(list)中的原因是, 在内增函数中要改变外部的值, 必须是引用对象, 要不然会报错: reference before assignment
    def adder(toPrint):
        print(str(i[0]) + '. ' + toPrint)
        i[0]+=1
    return adder 

这里的autoIncrement是一个构造函数, 他构造了另一个干活的函数, 这个函数可以引用构造函数中的变量(如果要修改, 那么构造函数中的变量必须是引用类型的)
下面是调用:

toDo = autoIncrement()
toDo('上午记得打球🏀  ') 
toDo('下午记得去面试')
toDo('明天记得去约会')

结果:

posted @ 2020-08-11 14:13  Bravo_Jack  阅读(494)  评论(0)    收藏  举报