首页 > 其他 > 详细

三.函数进阶(装饰器)二

时间:2019-05-11 16:27:11      阅读:174      评论:0      收藏:0      [点我收藏+]

一. 装饰器

装饰器
装饰器的作用
装饰器的固定模式
装饰器意思在已有的功能上  添加新功能但是不能修改原有的功能
# 简单的函数装饰器
def fun1():
 print("哈哈哈哈哈哈name")
def fun2():
   print("啦啦啦啦啦啦啦")
   fun1()
fun2()

# 啦啦啦啦啦啦啦
# 哈哈哈哈哈哈name
import  time
def aa():
    start=time.time()
    print("啦啦啦啦啦啦啦啦啦啦啦啦啦")
    time.sleep(2)
    end=time.time()
    cc=end-start
    return  cc,"执行时间"
d=aa()
print(d)

# 啦啦啦啦啦啦啦啦啦啦啦啦啦
# # (2.038980722427368, ‘执
# 简单装饰器
import  time
def gg(ll):
    start=time.time()
    ll()
    end = time.time()
    lo=end-start
    print(lo)
    
def ff():
    time.sleep(3)
    print("啦啦啦啦啦啦啦啦啦啦啦啦啦")
gg(ff)

# 啦啦啦啦啦啦啦啦啦啦啦啦啦
# 3.0006630420684814
# 装饰器意思在已有的功能上  添加新功能但是不能修改原有的功能
import  time
def fun():
    time.sleep(4)
    print("哈哈哈哈哈哈哈啊哈")

def b(f):          # 装饰器函数
    def c():
        start=time.time()
        f()   # 被装饰的函数
        end=time.time()
        print(end-start)
    return  c
a=b(fun)
a()
# 哈哈哈哈哈哈哈啊哈
# # # 4.000654458999634
1 .@语法糖 装饰器  return
import  time
# 装饰器意思在已有的功能上  添加新功能但是不能修改原有的功能
def b(f):          # 装饰器函数
    def c():
        start=time.time()
        f()   # 被装饰的函数
        end=time.time()
        print(end-start)
    return  c

@b          #语法 糖@装饰器函数名           # b=b(fun)     等于@b           # b()

def fun(): # 被装饰的函数
    time.sleep(4)
    print("哈哈哈哈哈哈哈啊111哈")
fun()

# 哈哈哈哈哈哈哈啊111哈
# 4.005651235580444
# 被装饰的函数带有返回值的 装饰函数
import time
def b(f):          # 装饰器函数
    def c():
        start=time.time()
        ret=f()   # 被装饰的函数
        end=time.time()
        print(end-start)
        return  ret
    return  c
@b                # # b=b(fun)     等于@b 语法 糖@装饰器函数名
def fun(): # 被装饰的函数
    time.sleep(4)
    print("哈哈哈哈哈哈哈啊11111111111111111哈")
    return "我来学习python"
aa=fun()
print(aa)

# 哈哈哈哈哈哈哈啊11111111111111111哈
# 4.014800548553467
# 我来学习python
# 被装饰的函数带参数的装饰器
import  time
def b(f):          # 装饰器函数
    def c(a):
        start=time.time()
        ret=f(a)   # 被装饰的函数
        end=time.time()
        print(end-start)
        return  ret
    return  c
@b          # # b=b(fun)     等于@b 语法 糖@装饰器函数名
def fun(a): # 被装饰的函数
    time.sleep(4)
    print("哈哈哈哈哈哈哈",a)
    return "我来学习python"
aa=fun(99999999)
print(aa)

# 哈哈哈哈哈哈哈 99999999
# 4.005716800689697
# 我来学习python
2 .@语法糖 装饰器  return   参数*arg ,**kwargs
import  time
# 被装饰的函数带参数的装饰器
def b(f):          # 装饰器函数
    def c(*args,**kwargs):
        start=time.time()
        ret=f(*args,**kwargs)   # 被装饰的函数
        end=time.time()
        print(end-start)
        return  ret
    return  c


@b          # # b=b(fun)     等于@b 语法 糖@装饰器函数名
def fun(a): # 被装饰的函数
    time.sleep(4)
    print("哈哈哈哈哈哈哈",a)
    return "我来学习php11111"
bb=fun(99999999)
print(bb)


@b          # # b=b(fun)     等于@b 语法 糖@装饰器函数名
def fun1(c,d): # 被装饰的函数
    time.sleep(3)
    print("啦啦啦啦啦啊啦里",c,d)
    return "我来学习python2222"
aa=fun1(10000,2000000)
print(aa)

#
# 我来学习php11111
# 啦啦啦啦啦啊啦里 10000 2000000
# 3.008254289627075
# 我来学习python2222
import  time
# 被装饰的函数带参数的装饰器
def b(f):          # 装饰器函数
    def c(*args,**kwargs):
        start=time.time()
        f(*args,**kwargs)   # 被装饰的函数
        end=time.time()
        print(end-start)

    return  c

@b          # # b=b(fun)     等于@b 语法 糖@装饰器函数名
def fun(a): # 被装饰的函数
    time.sleep(4)
    print("哈哈哈哈哈哈哈",a)
fun(99999999)


@b          # # b=b(fun)     等于@b 语法 糖@装饰器函数名
def fun1(c,d): # 被装饰的函数
    time.sleep(3)
    print("啦啦啦啦啦啊啦里",c,d)
fun1(10000,2000000)
 3. 装饰器固定模板
# 装饰模板
def wrapper(f):  #  f参数代表被装饰的函数
    def inner(*args,**kwargs):
         # 在装饰函数之前要做的事情
         ret= f(*args,**kwargs)
         # 在装饰函数之后要做的事情
         return  ret
    return  inner

@wrapper

def aa(a):
    print("11111111",a)
    return  "我要吃冰淇淋"
dd=aa(2)
print(dd)
def outer(f):
    def inner(*args,**kwargs):
         ret= f(*args,**kwargs)
         return  ret
    return inner

@outer
def aa(*args):
    print("aaaa",args)
    return "我是被装饰的函数"
b=aa(1,666666,999,5555)
print(b)

 

 






















 

三.函数进阶(装饰器)二

原文:https://www.cnblogs.com/Sup-to/p/10849016.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!