全网整合营销服务商

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

免费咨询热线: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中装饰器学习总结  # 一个函数  # 到此  # 的是  # 我想  # 就会  # 出了  # 又是  # 你就  # 这就是  # 它是  # 我们可以  # 就行  # 对其  # 不像  # 看完  # 就想  # 不带  # 它不  # 前就  # 这和 


相关文章: 建站主机如何安装配置?新手必看操作指南  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何制作一个表白网站视频,关于勇敢表白的小标题?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  建站之星与建站宝盒如何选择最佳方案?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何快速搭建个人网站并优化SEO?  如何通过wdcp面板快速创建网站?  建站之星安装步骤有哪些常见问题?  独立制作一个网站多少钱,建立网站需要花多少钱?  建站之星安装模板失败:服务器环境不兼容?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  代刷网站制作软件,别人代刷火车票靠谱吗?  网站专业制作公司有哪些,做一个公司网站要多少钱?  如何续费美橙建站之星域名及服务?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  如何在Windows 2008云服务器安全搭建网站?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  如何在腾讯云服务器快速搭建个人网站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  网站制作模板下载什么软件,ppt模板免费下载网站?  如何在IIS中新建站点并配置端口与IP地址?  建站之星展会模版如何一键下载生成?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何在建站之星绑定自定义域名?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  香港服务器WordPress建站指南:SEO优化与高效部署策略  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  制作网页的网站有哪些,电脑上怎么做网页?  青岛网站建设如何选择本地服务器?  制作企业网站建设方案,怎样建设一个公司网站?  php json中文编码为null的解决办法  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何快速完成中国万网建站详细流程?  建站主机选哪家性价比最高?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  定制建站流程步骤详解:一站式方案设计与开发指南  如何通过山东自助建站平台快速注册域名?  实例解析Array和String方法  如何挑选最适合建站的高性能VPS主机?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何在腾讯云服务器上快速搭建个人网站?  ,石家庄四十八中学官网?  活动邀请函制作网站有哪些,活动邀请函文案?  建站之星24小时客服电话如何获取?  如何在香港服务器上快速搭建免备案网站?  宝塔建站助手安装配置与建站模板使用全流程解析  建站与域名管理如何高效结合? 

您的项目需求

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