鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: Boibot

[已解决]分别把lambda函数变为普通函数,把make_repeat(n)函数变为lambda函数

[复制链接]
 楼主| 发表于 2021-9-5 23:32:10 | 显示全部楼层
suchocolate 发表于 2021-9-5 23:15
那请把你报错的代码贴出来,别贴草稿好吗?

这里
  1. def make_repeat(n):
  2.     return s * n
  3. n = 2
  4. print(make_repeat(n)(8))
  5. print(make_repeat(n)('FishC')) error

  6. def make_repeat(n)(s):   
  7.     return s * n
  8. n = 2
  9. print(make_repeat(n)(8))
  10. print(make_repeat(n)('FishC')) error


  11. def make_repeat(n,s):   
  12.     return s * n
  13. n = 2
  14. print(make_repeat(n,8))
  15. print(make_repeat(n,'FishC'))  right


  16. def make_repeat(n=2,s):   
  17.     return s * n
  18. print(make_repeat(n,8))
  19. print(make_repeat(n,'FishC'))  error


  20. def make_repeat(s):   
  21.     return s * 2
  22. print(make_repeat(8))
  23. print(make_repeat('FishC'))    right
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-5 23:43:33 | 显示全部楼层
我等
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 10:11:14 | 显示全部楼层

  1. def make_repeat(n):
  2.     return s * n  # s是函数内局部变量,也没有传入的接口,所以调用的时候报错s没有定义。


  3. n = 2
  4. print(make_repeat(n)(8))  # 普通函数不是这么多调用的,make_repeat返回的是普通值,不是函数的入口。
  5. print(make_repeat(n)('FishC'))  # error


  6. # 修改如下:
  7. def make_repeat(s, n=2):
  8.     return s * n


  9. print(make_repeat(2))
  10. print(make_repeat('FishC'))


  11. # ===================================================================================


  12. def make_repeat(n)(s):  # 没有这种函数定义方式,定义参考上面的


  13. return s * n
  14. n = 2
  15. print(make_repeat(n)(8))
  16. print(make_repeat(n)('FishC'))  # error


  17. # ===================================================================================
  18. #
  19. def make_repeat(n, s):  # 没有问题
  20.     return s * n


  21. n = 2
  22. print(make_repeat(n, 8))
  23. print(make_repeat(n, 'FishC'))  # right


  24. # ===================================================================================
  25. #
  26. def make_repeat(n=2, s):  # 函数定义一般关键字放后面,非关键字放前面,使用的时候要制定关键字,参考第一个
  27.     return s * n

  28. print(make_repeat(n, 8))
  29. print(make_repeat(n, 'FishC'))  # error

  30. # ===================================================================================

  31. def make_repeat(s):  # 没有问题
  32.     return s * 2
  33. print(make_repeat(8))
  34. print(make_repeat('FishC'))    #right
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-6 10:12:34 | 显示全部楼层
还是仔细看看函数章节吧,在这不断尝试,不如咨询看看教程。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-6 23:26:52 | 显示全部楼层
suchocolate 发表于 2021-9-6 10:12
还是仔细看看函数章节吧,在这不断尝试,不如咨询看看教程。

今天看了你发的菜鸟函数章节找到好多没弄懂的地方,之前都没注意到,我的知识体系都是漏洞
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-7 08:13:46 | 显示全部楼层
s是函数内局部变量,也没有传入的接口,所以调用的时候报错s没有定义。
普通函数不是这么多调用的,make_repeat返回的是普通值,不是函数的入口。
函数定义一般关键字放后面,非关键字放前面,使用的时候要制定关键字,参考第一个。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 23:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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