zoukankan      html  css  js  c++  java
  • 知识点拾遗——装饰器

    装饰器

    def wrappwer(func):
        def inner(*args,**kwargs):
            print("molaoshi")
            ret = func(*args,**kwargs)
            #函数后的操作
            print("liner")
        return inner
    
    @wrappwer
    def func1(a,b):
        print(a)
        print("yangzil")
        print(b)
    
    func1("alex","yan")
    #如果有参数的话,就该这样搞,那么为什么要这样设计呢?说白了就是将函数封装进去在在器前后添加某些操作,
    # 至于参数的话,反正已经大三无所谓,甚至可以利用这些参数进行某种函数前后的操作
    #而最后调用函数的额时候其实是个返回值,func1("alex","yan")是用来接收函数的返回值的
    
    from functools import wraps
    
    def deco(func):
        @wraps(func) #加在最内层函数正上方
        def wrapper(*args,**kwargs):
            return func(*args,**kwargs)
        return wrapper
    
    @deco
    def index():
        '''哈哈哈哈'''
        print('from index')
    
    print(index.__doc__)
    print(index.__name__)
    
    #使⽤装饰器时,有⼀些细节需要被注意。
    #例如,被装饰后的函数其实已经是另外⼀个函数了(函数名等函数属性会发⽣改变)。添加后由于函数名和函数的doc发⽣了改变,对测试结果有一定影响!
    #wraps是用来将inner函数的属性设置为index的属性值
    
    记录学习的点点滴滴
  • 相关阅读:
    Thread.join
    Thread.yield
    线程的生命周期
    HashMap底层原理
    Web Services
    Struts2框架
    hibernate乐观锁实现原理
    Hibernate框架
    oracle exp 无法导出空表
    linux 远程复制文件或文件夹
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/14890881.html
Copyright © 2011-2022 走看看