python 中闭包的问题

闭包

函数是一个对象,所以可以作为某个函数的返回结果。

一个函数和它的环境变量合在一起,就构成了一个闭包(closure)。在Python中,所谓的闭包是一个包含有环境变量取值的函数对象。环境变量取值被保存在函数对象的__closure__属性中

使用闭包注意事项 1.闭包中是不能修改外部作用域的局部变量的


作用

  • 用途1:当闭包执行完后,仍然能够保持住当前的运行环境。

比如说,如果你希望函数的每次执行结果,都是基于这个函数上次的运行结果。我以一个类似棋盘游戏的例子来说明。假设棋盘大小为50*50,左上角为坐标系原点(0,0),我需要一个函数,接收2个参数,分别为方向(direction),步长(step),该函数控制棋子的运动。棋子运动的新的坐标除了依赖于方向和步长以外,当然还要根据原来所处的坐标点,用闭包就可以保持住这个棋子原来所处的坐标。

  • 用途2:闭包可以根据外部作用域的局部变量来得到不同的结果

这有点像一种类似配置功能的作用,我们可以修改外部的变量,闭包根据这个变量展现出不同的功能。比如有时我们需要对某些文件的特殊行进行分


在用Python进行函数式编程时,闭包对数据的持久化以及按配置产生不同的功能。

参考链接:

  • http://blog.csdn.net/tao01230/article/details/45972763

  • http://python.jobbole.com/82624/

原文地址:https://www.cnblogs.com/Hondsome/p/5964483.html