python练习八:返回函数

python练习八:返回函数

题目

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

代码

# 方法一
s = 0 #设置全局变量
def createCounter():
    def counter():
    	# 加上global,同时无论在那里修改,都会全局影响 
        global s #引用全局变量
        s = s+1
        return s
    return counter

# 测试:
counterB = createCounter()
if [counterB(), counterB(), counterB(), counterB()] == [1, 2, 3, 4]:
    print('测试通过!')
else:
    print('测试失败!')
# 方法二
def createCounter():
    s = [0] # 当成列表,只更改列表的值
    def counter():
        s[0] = s[0]+1
        return s[0]
    return counter

# 错误代码
def createCounter():
    s = 0
    def counter():
        s += 1 # s被当成counter的局部变量,并且认为createCounter的s变量没有定义
        return s
    return counter
# 错误信息
# UnboundLocalError: local variable 's' referenced before assignment  ---> s未被定义
上一篇:python中max使用key参数


下一篇:Svelte 模板中条件渲染写法