python函数闭包

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}

总结:闭包的作用是为了保留外层函数的变量。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值