本文目录
1、什么是闭包
1.1 一段简单的闭包函数代码
def outer1(outer_param):
def inner():
print("外部函数的参数是:%s" % outer_param) # outer_param是外部函数outer的参数,是一个外部的变量,并不在函数inner中
return inner # 此处返回的是函数对象!而不是函数调用(inner())的结果
1.2 闭包类似于内部函数,但有所不同
从形式上看,闭包类似于简单的内部函数。
# 一个简单的内部函数
def outer2(outer_param):
def inner(outer_param):
print("外部函数的参数是:%s" % outer_param)
return inner(outer_param)
从代码上看,闭包和普通内部函数的相似点有两个:
- 在函数(outer)内部定义了一个新函数(inner);
- 内部的新函数inner可以读取到外部函数的参数(outer_param)
然而细看代码,会发现他们也有几点不同,正是这几点不同让闭包成为了闭包:
1、虽然普通内部函数和闭包都可以读取到外部函数的参数(outer_param),但是其实二者读取到的方式是不同的!闭包是直接读取,
而普通内部函数中,inner是通过自己的参数读取到的。
也就是说:普通内部函数是 生成一个自己的内部变量,通过