影子在啊 发表于 2022-4-4 16:58:19

Python 函数

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

double = make_repeat(2)
print(double(8))
函数表达式没提到s啊 为啥直接代入了

hrpzcf 发表于 2022-4-4 17:02:19

8就是其中的s啊
double = make_repeat(2)
# double就是lambda s: s * 2
# 换个方式写就是
# def double(s):
#   return s * 2

isdkz 发表于 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 的返回值
页: [1]
查看完整版本: Python 函数