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('明天记得去约会')
结果: