Python学习笔记(十二):高阶函数(二).return返回、closure闭包

本文深入探讨了Python中闭包的概念,解释了为何在内部函数引用外部循环变量会导致问题,并提供了解决方案。同时,文章介绍了如何使用匿名函数lambda简化代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 返回函数

  • 一般return返回

在调用函数时,已获得计算结果
在这里插入图片描述

  • return返回函数

将函数赋值给变量,需要计算时,再次执行变量指向的函数

在这里插入图片描述
上图中,内部函数可以访问外部函数的变量args,相关参数都已保存在返回的内部函数中,称之为闭包

  • 闭包

在这里插入图片描述
在执行f1(),f2(),f3()函数调用时,内部函数才开始执行,获取的外部变量是已经循环过的i,即3
所以三个输出都为9
解决方案:在内部函数外层再建一个函数包裹,将i通过参数形式传入,可以起到保存参数的作用
在这里插入图片描述
个人理解,在执行53行append语句时,执行f_out(i),该函数马上执行,传入参数就是此时的i,内部函数取用时,就是之前传入的i
所以不要在内部函数引用外部循环变量,改用函数传参形式
用一定的简写形式,用匿名函数lambda替换f()
在这里插入图片描述

  • 匿名函数

限制:只能有一个表达式,返回值就是该表达式的运算结果

lambda,等效写法

在这里插入图片描述

无参数写法

在这里插入图片描述
所以上面闭包简化时所用得匿名函数无参数写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值