网站地图 联系我们

学习python首选-实战python学习班,专注于python高级工程师培养,python课程:包括Python核心编程技术、全栈开发、网络爬虫、人工智能等。python全栈工程师+提高工作经验,获取免费试听课程!
当前位置: python培训 > python学习 > 常见问题 > 正文

求助关于python装饰器返回值语法问题

来源:肚皮舞 浏览量: 发布日期:20-08-31 10:53:04 调整字体大小【 【所属栏目:常见问题】

  为什么代码中得activate函数里面的wrapped函数中的try语句里面要return func呢

  因为一个被装饰的函数通常被期望与没有被装饰的时候返回一样的东西。那里返回的就是未被装饰的函数的调用结果。至于 try,因为那个装饰器要做清理。finally 中的语句总是会执行的,不管是发生异常,还是你说要返回了。

  Python中装饰器类似面向切面编程(AOP)中的Around advice(详细可以参考:http://docs.spring.io/spring/docs/2.0.8/reference/aop.html)

  你上面这段代码在调用run函数的时候其实是调用了activate函数返回的wrapped函数,然后wrapped函数中的func变量是在test_simple中定义的run函数。也就是说如果你在activate函数中不写“return func()”的话,那么根本不会调用test_simple中定义的run函数。

  如果上面的代码翻译成JavaScript的话大意会是如下:

  var run = activate(function(){

  // run函数中的代码

  })

  function activate(func) {

  return function() {

  // wrapped中的代码

  return func();

  }

  }

  也就是说你在test_simple中调用的run函数其实已经是一个被替换掉的另外一个函数,这个替换的函数就是activate函数中返回的函数。

标签:
肚皮舞新闻动态News Center

肚皮舞视频

肚皮舞培训课程

联系卡伊丝contact us
联系我们
python培训「零基础入门到精通」python人工智能编程培训班-0798wz.com

咨询热线:18301225663