python中的闭包

一、闭包的概念

闭包指函数的嵌套。可以在函数内部定义一个嵌套的函数,将嵌套的函数视为一个对象,并将嵌套函数作为返回结果返回。

二、测试代码

def test_closure(x):
print("=1=")
def closure_add(y,z):
print("=2=")
return x+y+z
print("=3=")
return closure_add #返回函数对象,注意没有小括号

result = test_closure(1) #first

print(result(2,3)) #second
print(result(3,4)) #third

三、测试结果

(由于csdn编辑器问题,导致下图运行结果中的‘=’号和代码中的不一样)
在这里插入图片描述

结果分析:
1、python解释器执行#first时,遇到函数test_closure中定义的函数closure_add并不进入,而是直接跳过。
2、执行到#second时,会进入闭包函数closure_add中,在#first时已经给x赋值为1,所以该句的结果相当于执行1+2+3,结果为6.
3、执行#third时,类似执行#second,相当于执行1+3+4,结果为8.

四、闭包的作用

1、保持函数始终给予上一次的执行结果,例如测试代码中的#second和#third是基于#first的结果不变。
2、根据外部变量的每次不同得到不同的结果,#second和#third传入的值不同,得到的结果也不同。

说明:python新手,如有错误,请多指教!

posted @ 2019-04-14 22:25  ISmileLi  阅读(2)  评论(0编辑  收藏  举报