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

    装饰器

    装饰器(Decorators)是修改其他函数的功能的函数。需要在不改变源代码的情况下修改已经存在的函数,常见的例子是增加一句调试声明,以便查看传入的参数。

    装饰器本质上是一个函数,它把一个函数作为输入并且返回另一个函数。

    def document_it(func):
        def new_function(*args, **kwargs):
            '''*args是非关键字参数,用于元组,**kw是关键字参数,用于字典'''
            print("Runing function: ", func.__name__)
            print("Positional arguments: ", args)
            print("Keyword arguments: ", kwargs)
    
            result = func(*args, **kwargs)
    
            print("Result: ", result)
            return result
    
        return new_function
    
    def add_ints(a, b):
        return a+b
    
    print(add_ints(3, 5))
    
    cooler_add_ints = document_it(add_ints) # 人工对装饰器赋值
    cooler_add_ints(3, 5)

     单个装饰器

    多个装饰器:先执行靠近定义函数的装饰器,再执行外面的装饰器。

    ''' 一个函数可以有多个装饰器 '''
    def document_it(func): # 装饰器函数
        def new_function(*args, **kwargs):
            '''*args是非关键字参数,用于元组,**kw是关键字参数,用于字典'''
            print("Runing function: ", func.__name__)
            print("Positional arguments: ", args)
            print("Keyword arguments: ", kwargs)
    
            result = func(*args, **kwargs)
    
            print("Result: ", result)
            return result
        return new_function
    def square_it(func):
        def new_function(*args, **kwargs):
            result = func(*args, **kwargs)
            return result*result
        return new_function
    
    ''' 靠近函数定义的装饰器最先执行,然后依次执行上面的。 '''
    @document_it
    @square_it
    def add_ints(a, b):
        return a+b
    print(add_ints(3, 5))
    print("ending")

  • 相关阅读:
    rocketmq详解
    rocketmq的windows版客户端的启动步骤
    postman提交数组格式方式
    关于springmvc的包含list提交的格式
    数据库字段和实体类和map中对应类型
    怎么连接两个数据库和怎么停止上一个线程
    IDEA 创建类是自动添加注释和创建方法时快速添加注释
    centOs7 安装mysql8
    CentOS7安装Nginx及配置
    windows安装mysql8详解
  • 原文地址:https://www.cnblogs.com/xieyi-1994/p/13965703.html
Copyright © 2011-2022 走看看