问题引入:
记录一个人的步数,每次记录的步数要保存,并进行累加。
比如,初始0步,依次走2,5,6步,输出2,7,13步
第一种解决方案:声明global全局变量
origin = 0
def go(step):
global origin
new_position = origin + step
origin = new_position
return origin
print(go(2))
print(go(3))
print(go(4))
第二种解决方法:闭包
origin = 0
def position(pos):
def move(step):
nonlocal pos
new_position = pos + step
pos = new_position
return new_position
return move
f = position(origin)
print(f(2))
print(f(3))
print(f(4))
第三种解决方法:面向对象,调用类变量
class move():
origin = 0
def go(self,step):
self.step = step
new_position = move.origin + step
move.origin = new_position
return new_position
f1 = move()
r1 = f1.go(2)
r2 = f1.go(3)
r3 = f1.go(4)
print(r1, r2, r3)