python 函数闭包
一、闭包的概念
简单来说就是:“外层函数返回内层函数的函数名”。
1 函数嵌套流程图
2 闭包流程图
闭包实例
# 例如
# 先定义一个函数
def f1(tup, dic):
"""
输入一个元组和字典,字典的value和元组的值交换,
并返回一个元组和字典
:param tup: iterative object
:param dic: a dict
:return: a tuple and a dict
"""
new_tup = tuple(list(dic.values()))
def f2():
new_dic = dict(zip(dic.keys(), tup))
return new_tup, new_dic
return f2
tu = ('feifei', 18, 160)
di = {'name': 'sophia', 'age': 20, 'height': 165}
f = f1(tu, di) # 调用函数f1,返回的是f1内层函数f2的地址
print(f) # <function f1.<locals>.f2 at 0x000001B50B8119D8>
t, d = f() # 这里就相当于调用了f1的内层函数f2
print(t) # ('sophia', 20, 165)
print(d) # {'name': 'feifei', 'age': 18, 'height': 160}
总结:闭包的作用是为了保留外层函数的变量。