简单的说python闭包(python closure)的核心只有两点:
1. 内部函数,就是说在一个函数内部定义了另一个函数
2. 内部函数引用了外部函数的成员变量(必须是成员变量,不能是全局变量)
特性:
看下面的例子:
# coding=utf-8def outer(i): def inner(j): print('inner is:',j) return i+j return innert1 = outer(10) # outer参数i被赋值10print('-'*20)print('t1 is:',t1) # t1是一个对象print('-'*20)t2 = t1(20) # inner参数j被赋值20print('-'*20)print('t2 is:',t2) # 获得outer的返回值
起输出结果如下:
--------------------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的返回值。