python 装饰器

 前言

装饰器的学习,需要了解以下3个方面的知识

1.函数名即‘变量名’

2.不能更改被装饰函数的源代码以及调用方式

3.高阶函数和嵌套函数的定义

 

需求:写一个测试函数执行时间的装饰器

import time

def time_test(func):         #高阶函数里面接受另一函数,

  def wrapper(*args,**kwargs):    #嵌套函数在函数里面再定义一个函数

    start_time = time.time()

    func(*args,**kwargs)

    end_time = time.time()

  return wrapper                 #外部函数的返回值是内部函数名

 

@time_test                     #语法糖  f = time_test(f) #返回值 wrapper  ----->  f() =wrapper()

def f():

  time.sleep(2)

  print('in the f.')

 

@time_test

def f2(name):    #我在装饰器里的内部函数wrapper,参数用的是*args  **kwargs

  time.sleep(2)

  print('in th {}'.format(name))

 

调用

f()

f2('sex')

ok,了解这些基本的功能都可以实现了!

 

posted @ 2018-07-23 10:53  阳光下的小蚂蚱  阅读(111)  评论(0编辑  收藏  举报