python 装饰器 元类

装饰器

python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针)。
实质: 是一个函数
参数:是你要装饰的函数名(并非函数调用)
返回:是装饰完的函数名(也非函数调用)
作用:为已经存在的对象添加额外的功能
特点:不需要对对象做任何的代码上的变动
装饰器作用

装饰器最大的作用就是对于我们已经写好的程序,我们可以抽离出一些雷同的代码组建多个特定功能的装饰器,这样我们就可以针对不同的需求去使用特定的装饰器,这时因为源码去除了大量泛化的内容而使得源码具有更加清晰的逻辑。
函数的函数装饰器

import time
def decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
func()
end_time = time.time()
print(end_time - start_time)

return wrapper

@decorator
def func():
time.sleep(0.8)

func() # 函数调用

输出:0.800644397735595

类方法的函数装饰器
import time

def decorator(func):
def wrapper(me_instance):
start_time = time.time()
func(me_instance)
end_time = time.time()
print(end_time - start_time)
return wrapper

class Method(object):

@decorator 
def func(self):
    time.sleep(0.8)

p1 = Method()
p1.func() # 函数调用
通用装饰器
def aa(fun):
def inner(args,kwargs):
print('啦啦')
return fun(
args,kwargs)
return inner
有参通用装饰器
def w(a):
def w1(fun):
def inner(
args,
kwargs):
if a == 1 :
print('验证1')
elif a == 2:
print('验证2')
return fun(
args,**kwargs)
return inner
retrn w1

@w(1)
def play (a,b):
print('现在是下午%d点%d分'%(a,b))
play(3,30)

@w(2)
def play1():
print('啦啦啦')
play1()
元类

元类是一个类的类。就像一个类定义一个类的实例的行为一样,元类定义了一个类的行为。一个类是元类的一个实例。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 8,127评论 0 9
  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 9,201评论 0 27
  • 外面下着雨 心却为你打着伞 等着你的回信 等到天黑到黎明 心里的幻想 眼角的泪水 心里都是你 能多爱我一点吗 能在...
    长情调歌阅读 1,196评论 0 0
  • 《后来的我们》的故事来自刘若英散文集《我的不完美》里的第一篇小说《过年,回家》,这是一个故事,是一个贴近现实生活的...
    蛇入虎口阅读 819评论 0 1