码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-12-28 16:04:45      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:调用   添加   post   执行   函数名   star   python学习   rap   修改   

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-----装饰器

标签:调用   添加   post   执行   函数名   star   python学习   rap   修改   

原文地址:https://www.cnblogs.com/kakawith/p/8135667.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!