全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

深入浅出学习python装饰器

之前就了解到了装饰器, 但是就会点皮毛, 而且对其调用方式感到迷茫,正好现在的项目我想优化,就想到了用装饰器, 因此深入研究了下装饰器.

先看下代码:

import time


# 将函数作为参数传入到此方法....
def timeif(func):
  def wrapper(arg):
    print("in wrapper() %s" % (arg))
    start = time.clock()
    func(arg)
    end = time.clock()
    print("used: %s %s" % (end-start, arg))
  return wrapper


@timeif
def foo(arg):
  print("in foo() %s" % (arg))


if __name__ == '__main__':
  foo(" Hello ") # 表示执行foo函数....

我的疑惑就是明明return 的是一个函数名,按道理来讲,返回的就是一个函数地址啊!我理解有问题?随后上网查资料,又是闭包....但是我个人对它不感冒,随后自己分析,总结出了一段程序,看完你就知道原因了.
程序:

# coding=utf-8
# 带参数的函数 返回一个函数地址就行....
def funX(x):
  def funY():
    return x
  return funY


# 不带参数的函数....
def funX1():
  print("调用函数funX1")

  def funY1():
    print("调用函数funY1")
  return funY1


if __name__ == '__main__':
  # print(funX(5)()) # 调用有参数的嵌套函数...
  
  print(funX1()()) # 调用无参数的嵌套函数...

这和我们的装饰器不像吗?这就是我们的装饰器!因此,我们可以按照上面的程序来理解,也就是说它是首先确定参数个数,随后分别传入的,下面,我们来改写代码:

# coding=utf-8
import time


# 将函数作为参数传入到此方法....
def timeif(func):
  def wrapper(arg):
    print("in wrapper() %s" % (arg))
    start = time.clock()
    func(arg)
    end = time.clock()
    print("used: %s %s" % (end-start, arg))
  return wrapper


# @timeif
def foo(arg):
  print("in foo() %s" % (arg))


if __name__ == '__main__':
  timeif(foo)(' Hello')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# python  # 装饰器  # 快速了解Python中的装饰器  # Python中装饰器高级用法详解  # 浅谈python装饰器探究与参数的领取  # python装饰器实例大详解  # 详谈Python高阶函数与函数装饰器(推荐)  # python中装饰器级连的使用方法示例  # 详解 Python中LEGB和闭包及装饰器  # Python中装饰器学习总结  # 一个函数  # 到此  # 的是  # 我想  # 就会  # 出了  # 又是  # 你就  # 这就是  # 它是  # 我们可以  # 就行  # 对其  # 不像  # 看完  # 就想  # 不带  # 它不  # 前就  # 这和 


相关文章: 广州商城建站系统开发成本与周期如何控制?  潮流网站制作头像软件下载,适合母子的网名有哪些?  建站之星安装步骤有哪些常见问题?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  建站之星代理如何获取技术支持?  如何用搬瓦工VPS快速搭建个人网站?  如何选择适配移动端的WAP自助建站平台?  网站制作公司排行榜,抖音怎样做个人官方网站  魔毅自助建站系统:模板定制与SEO优化一键生成指南  h5网站制作工具有哪些,h5页面制作工具有哪些?  建站之星后台管理:高效配置与模板优化提升用户体验  如何通过PHP快速构建高效问答网站功能?  如何在万网自助建站中设置域名及备案?  油猴 教程,油猴搜脚本为什么会网页无法显示?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  建站主机解析:虚拟主机配置与服务器选择指南  制作电商网页,电商供应链怎么做?  如何选择域名并搭建高效网站?  深圳网站制作案例,网页的相关名词有哪些?  如何在IIS7中新建站点?详细步骤解析  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  如何选择建站程序?包含哪些必备功能与类型?  焦点电影公司作品,电影焦点结局是什么?  高端建站如何打造兼具美学与转化的品牌官网?  专业商城网站制作公司有哪些,pi商城官网是哪个?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  如何在服务器上配置二级域名建站?  如何在景安服务器上快速搭建个人网站?  如何挑选高效建站主机与优质域名?  宁波自助建站系统如何快速打造专业企业网站?  如何基于PHP生成高效IDC网络公司建站源码?  css网站制作参考文献有哪些,易聊怎么注册?  如何在建站主机中优化服务器配置?  如何快速建站并高效导出源代码?  建站之星代理如何优化在线客服效率?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  实例解析angularjs的filter过滤器  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  TestNG的testng.xml配置文件怎么写  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站之星安装模板失败:服务器环境不兼容?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  制作网站公司那家好,网络公司是做什么的?  如何通过可视化优化提升建站效果?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  香港服务器网站卡顿?如何解决网络延迟与负载问题? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。