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

Python中的装饰器

时间:2019-02-28 14:33:58      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:bsp   code   world   gif   添加   rap   函数   开放封闭原则   hid   

装饰器的详解

装饰器的作用

  在不修改原有函数的基础之上添加指定的功能属性;主要应用与开放封闭原则中。

 

示例

技术图片
import time
def timmer(f):          #装饰器函数
    def inner():
        start = time.time()
        ret = f()       #被装饰的函数
        end = time.time()
        print(end - start)
        return ret
    return inner
# @timmer               #语法糖 @装饰器函数名
def func():             #被装饰的函数
    time.sleep(0.01)
    print(老板好同事好大家好)
    return 新年好
func = timmer(func)
ret = func()
print(ret)
View Code

 

装饰器的使用情景

情景1:基本装饰器

import time
def wrapper(func):
    def funct():
        start = time.time()
        func()
        end = time.time()
    return funct

def func():
    time.sleep(0.5)
    print(test)

func = wrapper(func)
func()

 

情景2:强化装饰器-有返回的装饰器

import time
def wrapper(func):
    def Wrapper():
        start = time.time()
        ret = func()
        end = time.time()
        return ret
    return Wrapper

@wrapper
def func():
    time.sleep(0.5)
    print(hello world)
    return HELLO WORLD
Func = wrapper(func)
print(Func())

 

情景3:强化装饰器-有一个参数

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

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

 

情景4:强化装饰器-有无穷参数

import time
def timmer(f):    #装饰器函数
    def inner(*args,**kwargs):
        #(1,2) /(1)
        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,b = 2)
print(ret)

 

装饰器的固定模式

def wrapper(func):   #qqxing
    def inner(*args,**kwargs):
        ret = func(*args,**kwargs)   #被装饰的函数
        return ret
    return inner

 

Python中的装饰器

标签:bsp   code   world   gif   添加   rap   函数   开放封闭原则   hid   

原文地址:https://www.cnblogs.com/guge-94/p/10449343.html

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