zoukankan      html  css  js  c++  java
  • python-装饰器

    1、简单装饰器
    例如:
    def login(func):

    def inner(y):
    print('恭喜,验证通过!')
    func(y)
    return inner
    @login
    def TV(x):
    print('这就是 %s 。。。。' %x)


    TV('hah')
     

     结果:恭喜,验证通过!
        这就是 hah 。。。。


    流程:执行TV()时,首先是将被装饰的函数名作为装饰函数的参数执行装饰函数(此例中是将TV作为参数传入到login中并执行该函数),在执行完login函数后就返回该函数的返回值,
    然后有将被装饰函数的参数作为参数传入到login函数返回值(返回函数)并执行(此例中是将TV中的参数作为inner的参数传入inner中并执行该函数)!

    2、带参数的复杂装饰器
    例如:
    def x(can1,*args,**kwargs):

    print('这是x函数的结果!')
    return
    def y(can2,*args,**kwargs):
    print('这是y函数的结果!')
    return
    def fuhe(can3,can4,*args,**kwargs):
    def fan1(can5,*args,**kwargs):
    def fan2(can6,*args,**kwargs):
    can3(can6)
    can4(can6)
    can5(can6)

    return fan2
    return fan1


    @fuhe(x,y,)
    def z(h):
    print('这是z函数的结果!')
    return


    z(2)
    结果:

    这是x函数的结果!
    这是y函数的结果!
    这是z函数的结果!

    过程:将x,y这两个函数作为参数传给fuhe函数的can3,can4,将被装饰函数的函数名作为参数传给函数fan1的can5作为参数,然后将被装饰函数的参数作为参数传给函数fan2的can6,并执行代码!(原理和简单的装饰器一样,除了第一步将x,y这两个函数作为参数传给fuhe函数的can3,can4!)

  • 相关阅读:
    C#读取数据库字节流生成图片
    twitter通过oAuth验证获取json数据
    C#读写txt文件
    asp.net分页方法
    sql分页代码
    acm寒假特辑 1月19日 CodeForces
    acm寒假特辑 1月25日 CodeForces
    snow miku 日记
    错排问题(个人总结/复习用)
    acm寒假特辑 2月2日 HDU
  • 原文地址:https://www.cnblogs.com/zhangyuxin/p/6270199.html
Copyright © 2011-2022 走看看