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

    1 无参装饰器,包装无参函数

    #无参装饰器包装无参函数
    def decorator(func):
        print('我是装饰器')
        return func
    
    def decorator1(func):
        print('我是装饰器1')
        return func
    
    
    @decorator
    @decorator1
    def function():
        print('我是函数')
    function()
    '''
    执行顺序为:
    decorator1() -> decorator() -> function()
    '''
    
    #装饰器就相当于下面的调用
    #decorator(function())

    2 无参装饰器,包装有参函数

    #无参装饰器包装有参函数
    def decorator(func):
        def x(*args,**kwargs):#处理传入函数的参数
            print('装饰器开始')
            func(*args,**kwargs)#调用函数
            print('装饰器里面函数参数:',args,kwargs)
            print('装饰器结束')
        return x
    @decorator
    def function(age,name,sex,tel=110):
        print('我是函数参数:',age,name,sex,tel)
    
    function(18,'小王','')

    3 带参装饰器,包装无参数函数

    #带参装饰器包装无参数函数
    '''
    在装饰器的内部在定义一个装饰器,来修饰函数
    '''
    def decorator(decorator_arg):
        print('我是装饰器参数:',decorator_arg)     #装饰器参数
        def newdecorator(func):      #最终返回的函数,来调用被修饰的函数
            return func         #返回被修饰的函数
        return newdecorator
    
    @decorator('这是装饰器参数')
    def function():
        print('我是函数')
    
    function()

    4 带参数装饰器,包装带参数函数

    #带参数装饰器,包装带参数函数
    '''
    带参数的装饰器,在内部定义一个新的装饰器从新装饰函数,
    在定义一个方法来接受函数的参数,在这个函数的内部调用函数并把函数的参数传入
    '''
    def decorator(decorator_arg):
        def newdecorator(func):#func就相当于function函数
            def x(*args,**kwargs):#处理函数的参数
                print('装饰器开始')
                func(*args,**kwargs)#调用函数
                print('装饰器结束')
                print(decorator_arg,func,args,kwargs)
            return x
        return newdecorator
    
    @decorator('我是decorator_arg')
    def function(age,name,sex,tel=110):
        print('我是函数参数:',age,name,sex,tel)
    
    function(18,'翠花',sex="")

     

  • 相关阅读:
    关于flash在html的引用 ——OBJECT EMBED
    JS的trim()方法
    JavaScript语言精粹》(JavaScript: The Good Parts) 中文版PDF
    swfobject.js 详细解说
    百度文库功能的实现
    能说明你的Javascript技术很烂的五个原因zz
    Aptana3 使用不完全指南
    js高级功能与高级需求、高级期待
    js思维导图
    AspectCore使用 属性注入FromServiceContext
  • 原文地址:https://www.cnblogs.com/yinliang-liang/p/9883890.html
Copyright © 2011-2022 走看看