Python闭包详解
首先给出闭包函数的必要条件: 闭包函数必须返回一个函数对象 闭包函数返回的那个函数必须引用外部变量(一般不能是全局变量),而返回的那个函数内部不一定要return 几个典型的闭包例子: # ENV>>> Python 3.6 # NO.1 def line_conf(a, b): def line(x): return a * x + b return line # NO.2 def line_conf(): a = 1 b = 2 def line(x): print (a * x + b) return line # NO.3 def _line_(a,b): def line_c(c): def line(x): return a*(x**2)+b*x+ c return line return line_c 不包括print语句的代码是4行,闭包写法是6行,看起来有点不对劲啊?怎么闭包实现需要的代码量还多呢?别急,我现在有个需求: 再定义100条直线! 那么现在谁的代码量更少呢?很明显这个是可以简单计算出来的,采用闭包的方式添加一条直线只需要加一行代码,而普通做法需要添两行代码,定义100条直线两种做法的代码量差为:100+6 -(100*2+4) = -98。需要注意的是,实际环境中定义的单个函数的代码量多达几十上百行,这时候闭包的作用就显现出来了,没错