def func(b): return a+b
这称为一个闭包,闭包函数比普通函数会多出一个__closure__属性,里面定义了一个元组用于存放所有的cell对象,每个cell对象一一保存了这个闭包中所有的外部变量,所有我们只需要修改其中对应的cell对象的值就好了。
完整代码如下:
# -*- coding: utf-8 -*- def makefunc(a): def func(b): return a+b return func f = makefunc(1) f.__closure__[0].cell_contents = 2 print(f(1)) print(f(2))
输出成功的变为:
3 4