# -*- coding: utf-8 -*-
# decorator
# 定义:本质是函数,就是为其他函数添加附件功能
# 原则:
# 1.不能修改被装饰的函数的源代码
# 2.不能修改被装饰的函数的调用方式
# 实现装饰器
# 1.函数既变量
# 2.高阶函数
# 3.嵌套函数
# 高阶甘薯+嵌套函数--->装饰器
import time

# 计算函数运行时间装饰器:参数中包含函数
def countTime(func):
start_Time = time.time()
func()
end_Time = time.time()
print("then func run time is %s" % (end_Time - start_Time))
# return func # 返回func的内存地址

# 调用装饰器countTime
@countTime
def bar():
print("this is bar")
time.sleep(2)

# # 在bar中增加时间打印,从而在内存地址中覆盖原来的bar函数地址,并且原来的bar函数不变
# bar = countTime(bar)
# bar()

####高阶函数+嵌套函数####
def timer(func):
def countTime(*args, **kwargs):
start_Time = time.time()
func(*args, **kwargs)
end_Time = time.time()
print("then func run time is %s" % (end_Time - start_Time))

return countTime # 返回func的内存地址

@timer # timer(test1)
def test1():
time.sleep(3)
print("this is test1")

@timer
def test2(*args, **kwargs):
time.sleep(4)
print("test2 vlues :%s %s" % (str(*args), dict(**kwargs)))

test1()
test2("liyuzhou")

python菜鸟学习: 11. 装饰器的基础用法的更多相关文章

  1. python函数学习之装饰器

    装饰器 装饰器的本质是一个python函数,它的作用是在不对原函数做任何修改的同时,给函数添加一定的功能.装饰器的返回值也是一个函数对象. 分类: 1.不带参数的装饰器函数: def wrapper( ...

  2. python学习笔记四 迭代器,生成器,装饰器(基础篇)

    迭代器 __iter__方法返回一个迭代器,它是具有__next__方法的对象.在调用__next__方法时,迭代器会返回它的下一个值,若__next__方法调用迭代器 没有值返回,就会引发一个Sto ...

  3. 6月4日 python学习总结 装饰器复习

    1.  装饰器的原理以及为什么要使用装饰器 在代码运行期间动态增加功能的方式,称之为"装饰器"(Decorator). 在不影响原代码结构的情况下为其添加功能 2.  装饰器的基本 ...

  4. python函数与方法装饰器

    之前用python简单写了一下斐波那契数列的递归实现(如下),发现运行速度很慢. def fib_direct(n): assert n > 0, 'invalid n' if n < 3 ...

  5. Python装饰器的高级用法(翻译)

    原文地址 https://www.codementor.io/python/tutorial/advanced-use-python-decorators-class-function 介绍 我写这篇 ...

  6. Python函数装饰器原理与用法详解《摘》

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  7. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  8. guxh的python笔记三:装饰器

    1,函数作用域 这种情况可以顺利执行: total = 0 def run(): print(total) 这种情况会报错: total = 0 def run(): print(total) tot ...

  9. python 3.x 的装饰器笔记

    今天学到了python的装饰器,感觉这个东西还是稍微有些复杂,所以记录下来,方便以后的查找.虽然标题是python 3.x的装饰器,但是我也没有怎么用过python 2.x,感觉上应该是和python ...

  10. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

随机推荐

  1. 找了几个 Solon 的商业落地项目案例!

    Solon 是啥?是一个高效的 Java 应用开发框架:更快.更小.更简单.(代码仓库:https://gitee.com/noear/solon) 提倡: 克制.简洁.开放.生态 启动快 5 - 1 ...

  2. 100 行 shell 写个 Docker

    作者:vivo 互联网运维团队- Hou Dengfeng 本文主要介绍使用shell实现一个简易的Docker. 一.目的 在初接触Docker的时候,我们必须要了解的几个概念就是Cgroup.Na ...

  3. FAQ 关于allure和pycharm的运行模式

    关于allure和pycharm的运行模式 案例 新建一个项目allure_mode 新建一个python代码test_allure_001.py 代码如下 import pytest, os def ...

  4. Vue15 v-for和key的作用及原理

    部分转自https://blog.csdn.net/cun_king/article/details/120714227 1 v-for指令 1.1 简介 用于遍历. 当在组件中使用 v-for 时, ...

  5. GIT安装及IDEA配置(GIT)

    参考:https://blog.csdn.net/qq_40563761/article/details/91347443 1.安装git 2.idea下载GITHUB/GITEE插件 3.idea配 ...

  6. 无法加载 DLL“*******.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

    无法加载 DLL"Lib\WeWorkFinanceSdk.dll": 找不到指定的模块. (异常来自 HRESULT:0x8007007E). 网上查找了一大堆,没找到是什么问题 ...

  7. 线程私有变量ThreadLocal详解

    本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 烈火试真金,逆境试强者.--塞内加 目录 什么是ThreadLocal ThreadLo ...

  8. Python接口自动化测试(1)

    接口自动化测试三部曲:1.构造请求  2.判断结果  3.数据库查询 1.Python的第三方包:requests 简介:requests可以用来做接口测试.接口自动化测试.爬虫等 requests的 ...

  9. 视觉SLAM:VIO的误差和误差雅可比矩阵

    1.两个相机之间的非线性优化 观测相机方程关于相机位姿与特征点的雅可比矩阵: 1.1 位姿: 1.2 3D特征点 fx,fy,fz为相机内参 X',Y',Z'为3D点在相机坐标系下的坐标 该误差是观测 ...

  10. python3使用requests模块发https请求,提示caused by ssl error, can't connect to https url because the ssl module is not available

    Q: python3使用requests模块发https请求,提示caused by ssl error, can't connect to https url because the ssl mod ...