概述
利用闭包返回一个计数器函数,每次调用它返回递增整数:
s = 0 #设置全局变量
def createCounter():
def counter():
global s #引用全局变量
s = s+1
return s
return counter
counterA = createCounter()
print(counterA()) #每次调用子函数,都是会保留上次s的值进行计算的
方法二:如果没有nonlocal a,则运行会报错:
UnboundLocalError: local variable ‘a’ referenced before assignment
nonlocal是用于内部函数更改外层函数的外部变量的关键字
def createCounter():
a = 0
def counter():
nonlocal a
a = a+1
return a
return counter
方法三:创建生成器
def creatCounter( ):
def f( ):
x = 0
while True:
x = x +1
yield x
sum = f( )
def counter( ):
return next( sum )
return counter
方法四:
这里(简单版)把一个序列赋值给s,这样做的目的是方便子函数能够直接使用父函数内的变量值,而不会产生“local variable 'xxx' referenced before assignment”这样的错误。
def createCounter():
s = [0]
def counter():
s[0] = s[0]+1
return s[0]
return counter
最后
以上就是想人陪香水为你收集整理的Python学习笔记——利用闭包返回一个计数器函数,每次调用它返回递增整数的全部内容,希望文章能够帮你解决Python学习笔记——利用闭包返回一个计数器函数,每次调用它返回递增整数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复