美文网首页
python装饰器

python装饰器

作者: 转身丶即天涯 | 来源:发表于2019-08-21 14:17 被阅读0次

什么是装饰器?

装饰器实质上是闭包的一种特殊状态,闭包中我们一般传入的是自由变量,而在装饰器中,我们传入的是一个函数对象,并在闭包中对函数做一些额外处理。

装饰器的作用是什么?

装饰器的作用是给写好的函数添加额外的功能。

常见的使用场景有哪些?

比如,打印日志,验证用户是否已登录,flask中的路由函数(@app.route())等等。


请你手写一个装饰器,它的作用是将执行了哪些函数打印出来,并解释它的用法

import logging


def log(func):
    def wrap(*args):
        func()
        logging.warn("execute function'{}'".format(func.__name__))

    return wrap


@log
def login():
    print("login function.")


@log
def logout():
    pass


@log
def modify_form():
    pass


login()
logout()
modify_form()
image.png

首先导入了logging模块,用于打印日志使用。(注意,在脚本中,只有在日志级别>=warning时会显示。所以这里采用warn级别)
随后定义了log函数,并在log函数内部定义了闭包wrap,将要执行的函数func作为自由变量传入进来,并在闭包内执行,然后打印执行日志。
最终,返回闭包wrap。

所以,我们将打印日志的功能和业务逻辑解耦,这样的设计可以在不改动原有代码的情况下添加功能,有利于程序的可维护性。

相关文章

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

  • python中的装饰器

    python装饰器详解 Python装饰器学习(九步入门) 装饰器(decorator) 就是一个包装机(wrap...

  • [译] Python装饰器Part II:装饰器参数

    这是Python装饰器讲解的第二部分,上一篇:Python装饰器Part I:装饰器简介 回顾:不带参数的装饰器 ...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • Python进阶——面向对象

    1. Python中的@property   @property是python自带的装饰器,装饰器(decorat...

  • Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方

    Python 装饰器简介装饰器(Decorator)是 Python 非常实用的一个语法糖功能。装饰器本质是一种返...

  • Python装饰器

    Python装饰器 一、函数装饰器 1.无参装饰器 示例:日志记录装饰器 2.带参装饰器 示例: 二、类装饰器 示例:

  • python3基础---详解装饰器

    1、装饰器原理 2、装饰器语法 3、装饰器执行的时间 装饰器在Python解释器执行的时候,就会进行自动装饰,并不...

  • 2019-05-26python装饰器到底是什么?

    装饰器例子 参考语法 装饰器是什么?个人理解,装饰器,是python中一种写法的定义。他仍然符合python的基本...

  • 2018-07-18

    Python装饰器 装饰,顾名思义,是用来打扮什么东西的。Python装饰...

网友评论

      本文标题:python装饰器

      本文链接:https://www.haomeiwen.com/subject/pfbbsctx.html