鱼C论坛

 找回密码
 立即注册
查看: 1555|回复: 2

[已解决]Python 函数

[复制链接]
发表于 2022-4-4 16:58:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def make_repeat(n):
        return lambda s : s * n

double = make_repeat(2)
print(double(8))
函数表达式没提到s啊 为啥直接代入了
最佳答案
2022-4-4 18:35:00
这是闭包,make_repeat 这个函数返回一个接受一个参数 s 的函数,

且 n 由它的外部函数 make_repeat 来固定,

也就是 double = make_repeat(2) 得到的是一个 n 被固定为 2 的 lambda 函数,

double(8) 是将 8 传给 lambda 函数的 s,得到 s * 2 的返回值
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-4 17:02:19 | 显示全部楼层
8就是其中的s啊
double = make_repeat(2)
# double就是lambda s: s * 2
# 换个方式写就是
# def double(s):
#     return s * 2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 18:35:00 | 显示全部楼层    本楼为最佳答案   
这是闭包,make_repeat 这个函数返回一个接受一个参数 s 的函数,

且 n 由它的外部函数 make_repeat 来固定,

也就是 double = make_repeat(2) 得到的是一个 n 被固定为 2 的 lambda 函数,

double(8) 是将 8 传给 lambda 函数的 s,得到 s * 2 的返回值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 18:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表