51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4608|回复: 5
打印 上一主题 下一主题

[求助] Python返回函数不理解之处

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-7 09:39:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    看代码:
    1. def fun1(f):
    2.     def fun2(*args):
    3.         f(*args)
    4.     return fun2

    5. @fun1
    6. def add(a,b):
    7.     return a+b
    复制代码

    这个代码意思我已经理解了
    我只是不理解为什么要这么写.

    • 第一个不理解在fun1中,为什么函数内部还有一个函数,这样做有什么优势? 我要调用fun2可以直接就在需要的地方直接调用fun2了,这个写法我觉得有点莫名其妙. > 就像这段代码只为了得到一个函数,而后又去调用这个函数,我需要的时候直接调用sum函数不就好了..外面这个有什么必要?:
    • 第二个不理解,@fun1这个写法有什么必要性吗?在我看来有点多余,反而让代码更加不易于阅读. > 求大神指点一下,我可是学Python这个玩意遇到了很多莫名其妙的问题,以后整理一下,还有很多很多不理解的地方..
      1. def lazy_sum(*args):
      2.     def sum():
      3.         ax = 0
      4.         for n in args:
      5.             ax = ax + n
      6.         return ax
      7.     return sum

      8. >>> f = lazy_sum(1, 3, 5, 7, 9)
      9. >>> f
      10. <function lazy_sum.<locals>.sum at 0x101c6ed90>
      11. >>> f()
      12. 25
      复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2019-1-7 11:48:12 | 只看该作者
    你有没有想过在fun2里加入一些其他额外的功能呢,比如打印函数名,记录运行开始时间和结束时间等与f函数不相关的功能,这样在你有很多函数的时候就不用在每个方法里去加入这些内容了,如果你不需要,那就直接写f然后调用就行
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:45
  • 签到天数: 1806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    3#
    发表于 2019-1-8 09:29:37 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-11-8 10:04
  • 签到天数: 473 天

    连续签到: 2 天

    [LV.9]测试副司令

    4#
    发表于 2019-1-8 10:27:48 | 只看该作者
    应该是为了解决变量传输的问题
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 10:15
  • 签到天数: 1521 天

    连续签到: 5 天

    [LV.Master]测试大本营

    5#
    发表于 2019-1-8 10:50:01 | 只看该作者
    代码规范
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:50
  • 签到天数: 2818 天

    连续签到: 6 天

    [LV.Master]测试大本营

    6#
    发表于 2019-1-8 11:18:18 | 只看该作者
    看你的真实需要,代码规范问题
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 20:48 , Processed in 0.065860 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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