栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 装饰器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 装饰器

记录个人学习记录     

        装饰器放在一个函数开始的地方、像个帽子一样戴在某个函数头上,和这个函数绑在一起,在我们调用这个函数的时候,第一件事并不是执行这个函数,而是将这个函数作为参数传入他头顶这顶帽子,这顶帽子我们称为 装饰器

装饰器的作用
  • 使代码结构清晰,更加优雅
  • 将实现特定功能的代码封装成装饰器,提高代码复用率,增强代码可读性
装饰器可以用来做什么?
  • 日志打印器
    • 执行函数前,打印一行日志,输出要执行函数信息
    • 当函数执行完毕,打印日志
import logging


def logger(func):
    def wrapper(*args, **kwargs):
        logging.warning("当前正在执行函数{}".format(func.__name__))
        func(*args, **kwargs)
        logging.warning("函数执行完毕")

    return wrapper


@logger
def func(x, y):
    print("{} + {} = {}".format(x, y, x + y))


func(3, 6)
output:

WARNING:root:当前正在执行函数func
3 + 6 = 9
WARNING:root:函数执行完毕

如何实现一个带参的装饰器

不带参装饰器,两次嵌套函数,带参的三层嵌套

def say_hello(contry):
    def wrapper(func):
        def deco(*args, **kwargs):
            if contry == "china":
                print("中国")
            elif contry == "america":
                print("America")

        return deco

    return wrapper


@say_hello("china")
def xiaoming():
    pass


@say_hello("america")
def jack():
    pass


xiaoming()

output:

中国

 本文参考连接:https://cloud.tencent.com/developer/article/1488285

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号