1.闭包
def run(pos):
def go(step):
nonlocal pos #nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
new_pos = pos + step
pos = new_pos
return new_pos
return go
s = run(ori)
print(s(1))
print(s(2))
print(s(3))
2.装饰器
def foo(func):
def run(*args, **kwargs):
print('this is a zhuangshiqi')
func(*args, **kwargs)
return run
@foo
def test(name, age, **kwargs):
print('hello world' + name + age)
print(kwargs)
test('xiaoming' , 'tom', a =1, b = 2)