装饰器1_统计时间函数装饰欢迎登录函数

import  time
def timmer(func):   #这里是要把需要装饰的函数名传递进来,方便后面调用。如果不传函数名而是直接调用,在调用的位置会报:RecursionError: maximum recursion depth exceeded while calling a Python object
    def wrapper(*args,**kwargs):
        time_start = time.time()
        res=func(*args,**kwargs)   #1、这里要使用func传递进来的形参名。2、定义成这种形式是方便,不管被装饰的函数有无参数,有无返回值,程序运行都不会报错     time_stop = time.time()
        time_run = time_stop - time_start
        print(‘run time is %s‘ % time_run)
     return res    return wrapper

@timmer
def log(name):
    time.sleep(3)
    print(‘welcome %s to zhuang‘ % name)

  

时间: 2024-10-07 14:52:25

装饰器1_统计时间函数装饰欢迎登录函数的相关文章

如何用python的装饰器定义一个像C++一样的强类型函数

Python作为一个动态的脚本语言,其函数在定义时是不需要指出参数的类型,也不需要指出函数是否有返回值.本文将介绍如何使用python的装饰器来定义一个像C++那样的强类型函数.接下去,先介绍python3中关于函数的定义. 0. python3中的函数定义 举个例子来说吧,比如如下的函数定义: 1 def fun(a:int, b=1, *c, d, e=2, **f) -> str: 2 pass 这里主要是说几点与python2中不同的点. 1)分号后面表示参数的annotation,这个

python 装饰器 一 (简单不带参数的函数)

#coding=utf-8 #python 装饰器 '''     装饰器可以用def的形式来定义.装饰器接收一个可调用对象作为输入参数, 并返回一个新的可调用对象. 装饰器新建了一个可调用对象,也就是return 返回的函数funx, 在新增的函数中,可以添加我们需要的功能,并通过调用原有函数来实现原有函数的功能 ''' def deco(func):     '''         无参数装饰器,func为被装饰的函数     '''     def _deco():         pri

4)装饰器、迭代器、生成器以及内置函数

 装饰器.迭代器.生成器以及内置函数 装饰器: 原函数前后增加功能,切不改变函数的原本使用方式 import timedef wrapper(f):    def inner():        start = time.time()        f()        end = time.time()        print('执行效率为%s'%(end-start))    return inner @wrapperdef func():    print('this is func')

请设计一个有参装饰器decorator,它可作用于任何函数上

最近有小伙伴面试,遇到一个很有意思的题:请设计一个有参装饰器decorator,它可作用于任何函数上,要求可以接受一个int作为参数,该参数为要求的执行秒数,如果该函数的执行时间大于规定的执行秒数,请打印改函数名字和执行时间. 这个题我之前面试的也遇到过,当时用高阶函数的方式实现,现在又遇到了,废话少说,咱们开发. 先来分析下: 1 有参数的装饰器 --> 高阶函数 2 执行时间 --> time 库 上代码: from functools import wraps import time #

python装饰器详解,多层装饰器,及带参数的装饰器。

pyhon学习有一段时间了,今天又碰到了Django的中间件,其实Django里面的中间件,就是用了多层的装饰器,然后去了解了一下多层装饰器,感觉有写东西差不多快忘了,也可能前面没学好. 现在重新记录,学习下. 普通装饰器: def warp(func): print('我是装饰器,碰到需要装饰的函数,一开始执行这里') def inner(*args, **kwargs): print('这里才是真正的装饰开始!') res = func(*args, **kwargs) print('装饰结

22_装饰器、带参数的装饰器、多个装饰器装饰一个函数

一.装饰器的执行流程 1 def wrapper(func): 2 def inner(*args,**kwargs): 3 ret = func(*args,**kwargs) 4 return ret 5 return inner 6 7 @wrapper #fun = wrapper(fun) 8 def fun(s): 9 print('666') 10 return s 11 12 fun('777') 13 print(fun('777')) 14 15 ''' 16 1.程序至上而

装饰器、迭代器、生成器、内置函数

一.装饰器 1.装饰器:在原有函数的前后增加功能,且不改变原函数的调用方式 例子1(不带参数的装饰器):计算func1函数的执行时间(计算一个函数的运行时间) import timedef timer(f): def inner(): starttime=time.time() ret=f() endtime=time.time() print('函数耗时:%s'% (endtime-starttime)) return ret return inner def func1(): print('

由浅入深,走进Python装饰器-----第二篇:进阶--类装饰函数

**类装饰器** @类 函数 2.1 用类装饰器来扩展原函数 # 用类装饰器来扩展原函数, 通过对象函数化触发__call__方法,进行返回 class KuoZhan(): def __call__(self,f): return self.newfunc(f) def newfunc(self,f): def in_newfunc(): print("1") f() print("2") return in_newfunc @KuoZhan() #1. KuoZ

实现一个Porperty装饰器,可以把方法装饰成同一个属性名

今天简单的实现下Porperty装饰器demo: class Porperty: def __init__(self, fget= None, fset= None, fdel = None): self.fget= fget self.fset = fset self.fdel = fdel def __get__(self, instance, cls): if instance is None: return self if not callable(self.fget): raise A