
简单的说python闭包(python closure)的核心只有两点:
1. 内部函数,就是说在一个函数内部定义了另一个函数
2. 内部函数引用了外部函数的成员变量(必须是成员变量,不能是全局变量)
特性:
看下面的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# coding=utf-8 def outer(i): def inner(j): print('inner is:',j) return i+j return inner t1 = outer(10) # outer参数i被赋值10 print('-'*20) print('t1 is:',t1) # t1是一个对象 print('-'*20) t2 = t1(20) # inner参数j被赋值20 print('-'*20) print('t2 is:',t2) # 获得outer的返回值 |
起输出结果如下:
1 2 3 4 5 6 |
-------------------- t1 is: .inner at 0x000000A757BBFA60> -------------------- inner is: 20 -------------------- t2 is: 30 |
得出结论:
1. t1 = outer(10)这句没有任何输出,说明inner没有被执行,所以无输出
2. t2 = t1(20) 这句执行后inner被执行,因此有了inner is: 20
3. t2的返回值为outer的返回值。