鱼C论坛

 找回密码
 立即注册
查看: 2468|回复: 8

[已解决]零基础python 第21课 课后题6的问题

[复制链接]
发表于 2018-5-11 09:30:46 | 显示全部楼层 |阅读模式

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

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

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

double= make_repeat(2)
print(double(8))

这个8是怎么传递进入的呢,make_repeat只有一个n作为参数。double里面也没有形参呀。想不通呀。望各位指点。
最佳答案
2018-5-11 09:48:07
make_repeat函数返回的是一个lambda函数,也就是说返回的是一个函数指针
该函数需要一个变量,对应lambda函数中的s
所以这个8就是那个s,结果就是8**2,也就是64
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-11 09:48:07 | 显示全部楼层    本楼为最佳答案   
make_repeat函数返回的是一个lambda函数,也就是说返回的是一个函数指针
该函数需要一个变量,对应lambda函数中的s
所以这个8就是那个s,结果就是8**2,也就是64
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-11 09:48:31 | 显示全部楼层
lambda表达式本身带一个参数s,所以需要传递一个参数,当然你也可以改写:方便理解如下:
def make_repeat():
        return lambda s, n: s*n

double= make_repeat()
print(double(8,2))
1单个参数的:
g = lambda x:x*2
print g(3)
结果是6

2多个参数的:
m = lambda x,y,z: (x-y)*z
print m(3,1,2)
结果是4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-11 09:51:56 | 显示全部楼层
emmm,建议再看下21课视频就了解了
8是赋值于里面的匿名函数的参数s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-11 09:52:45 | 显示全部楼层
咕咕鸡鸽鸽 发表于 2018-5-11 09:51
emmm,建议再看下21课视频就了解了
8是赋值于里面的匿名函数的参数s

但是python是如何做到的呢,他怎么知道8就是要传给s呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-11 10:20:56 | 显示全部楼层
liyuaneec 发表于 2018-5-11 09:52
但是python是如何做到的呢,他怎么知道8就是要传给s呢。


double(8)这是强制类型转换。
想想Java、C的(double)8你就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-11 10:33:20 | 显示全部楼层
跟各楼大神学习了,围观中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-1 20:35:08 | 显示全部楼层

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

double= make_repeat(2)                  make_repeat(2)定义了形参n变成了实参2
print(double(8))                              double(8)的时候变成了 lambda s: s*2             8就强制给了形参s  所以是8x2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-24 23:15:57 | 显示全部楼层
谢谢楼上各位的回答,稍微能理解一些了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 04:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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