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

Python之路-装饰器

时间:2017-07-25 13:35:33      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:nbsp   不能   usr   sed   附加   其他   return   知识   变量   

定义:装饰器本质是函数,它用于装饰其他函数(就是为其他函数添加附加功能)
原则:
  1. 不能修改被装饰的函数的源代码
  2. 不能修改被装饰的函数的调用方式
装饰器预备知识:
  1. 函数名即“变量”
  2. 高阶函数
    1. 把一个函数名当做实参传给另一个函数(在不修改被装饰函数源码的情况下为其添加功能)
    2. 返回值中包含函数名(不修改函数的调用方式)
  3. 嵌套函数
  4. 高阶函数+嵌套函数==装饰器
示例:
#!usr/bin/env python
# -*- coding:utf-8 -*-
import time
def deco(func):
    def wrapper(*args,**kwargs): #*args,**kwargs可以实现myfunc传出任意参数
        start_time = time.time()
        res = func(*args,**kwargs)
        end_time = time.time()
        print("elapsed time %s"%(end_time-start_time))
        return res    #如果func有返回值那么将其返回
    return wrapper
    
@deco    #等价于 myfunc = deco(myfunc)    如果还想想装饰器中传入其他参数,那么可以在deco后传入参数 例如:deco("xxx"),同时装饰器要增加一次函数嵌套,且通过deco传入的参数应位于最外层即decorator("xxx")
def myfunc():
    time.sleep(3)
    print("in myfunc")
myfunc()
 

Python之路-装饰器

标签:nbsp   不能   usr   sed   附加   其他   return   知识   变量   

原文地址:http://www.cnblogs.com/chiang97912/p/7233481.html

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