11-13 出个题,用闭包解决!
11-14 先用非闭包的方法解决
11-15 再用闭包解决一下_
# 11-13 出个题,用闭包解决!
# 11-14 我先用非闭包解决一下
# 11-15 再用闭包解决一下_
# 计算旅行者所走的步数
origin = 0
def go (step):
new_pos = origin + step
origin = new_pos
return origin
print(go(2))
print(go(3))
print(go(6))
# 上述过程是错误的,结果会报错。将origin = new_pos注释掉,打印的结果,全部是0。想想这个结果为什么不行,错在哪里?
# 怎么改写?会有正确的结果
origin = 0
def go (step):
global origin#声明一下全局变量
new_pos = origin + step
origin = new_pos
return origin
print(go(2))
print(go(3))
print(go(6))
# 打印结果如图1.正确的结果
# 11-15 再用闭包解决一下_
origin = 0
def factory(pos):
def go(step):
nonlocal pos#声明一下,不是局部变量用nonlocal
new_pos = pos + step
pos = new_pos
return new_pos
return go
tourist = factory(origin)
print(tourist(2))
print(tourist.__closure__[0].cell_contents)#打印看看是不是闭包在起作用
print(tourist(3))
print(tourist.__closure__[0].cell_contents)
print(tourist(6))
print(tourist.__closure__[0].cell_contents)

网友评论