python学习日记:day11-----装饰器

Posted kakawith

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习日记:day11-----装饰器相关的知识,希望对你有一定的参考价值。

1,time模块

import time
print(time.sleep())#让程序在执行到这个位置到时候停一会
print(哈哈哈)

 

获取当前时间
import time
time.time()#获取当前时间

一个函数的执行时间:

def func():
    start =time.time()
    print(啊哈哈哈哈哈)    
    time.sleep(0.01)
    end =time.time()
    print(end-start)
func()

 装饰器

import time

def func():
time.sleep(0.01)
print(老板好)

def timmer(f):#装饰器函数
    def inner():
        start=time.time()
        f()#被装饰的函数
        end =time.time()
        print(end-start)
    return inner
func =timmer(func)
func()    

 

装饰器的作用
#不想修改函数的调用方式,但是还想在原来的函数前后添加功能
#timmer就是一个装饰器函数,只是对一个函数有一些装饰作用。
 
开放封闭原则
#开放:对拓展是开放的
#封闭:对修改是封闭的
 
语法糖
import time
print(time.time()) # 获取当前时间
time.sleep(10)  #让程序在执行到这个位置的时候停一会儿


def timmer(f):    #装饰器函数
    def inner():
        start = time.time()
        ret = f()       #被装饰的函数
        end = time.time()
        print(end - start)
        return ret
    return inner

@timmer         #语法糖 @装饰器函数名# func = timmer(func)
def func():     #被装饰的函数
    time.sleep(0.01)
    print(老板好同事好大家好)
    return 新年好

ret = func()   #inner()
print(ret)
装饰带参数函数的装饰器
def timmer(f):    #装饰器函数
    def inner(*args,**kwargs):
        start = time.time()
        ret = f(*args,**kwargs)  #f(1,2)       #被装饰的函数
        end = time.time()
        print(end - start)
        return ret
    return inner

@timmer         #语法糖 @装饰器函数名
def func(a,b):     #被装饰的函数
    time.sleep(0.01)
    print(老板好同事好大家好,a,b)
    return 新年好
ret = func(1)   #inner()
print(ret)

装饰器函数格式:

def wrapper(f):    #装饰器函数,f是被装饰的函数
    def inner(*args,**kwargs):
        ‘‘‘在被装饰函数之前要做的事‘‘‘
        ret = f(*args,**kwargs)    #被装饰的函数
        ‘‘‘在被装饰函数之后要做的事‘‘‘
        return ret
    return inner

@wrapper         #语法糖 @装饰器函数名
def func(a,b):     #被装饰的函数
    time.sleep(0.01)
    print(老板好同事好大家好,a,b)
    return 新年好

 

以上是关于python学习日记:day11-----装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python学习记录day5

Python学习记录day5

Python学习日记简单了解迭代器生成器装饰器上下文管理器

?Python学习日记:day1

Python学习日记day10

Python学习日记day3:数据类型