python——装饰器详解

本文详细介绍了Python装饰器的概念、目的、创建方法,包括无参数、带参数的装饰器,以及内置的@property、@staticmethod和@classmethod。还探讨了装饰器类型,如使用functools.wraps保持原函数信息,以及类装饰器和多个装饰器的调用顺序。装饰器在不修改原函数的情况下,能够添加新的功能,如日志记录、权限检查等,是提高代码复用性和灵活性的重要工具。
摘要由CSDN通过智能技术生成

一、装饰器概念

1、装饰器

  • 装饰器:一种返回值也是一个函数的函数,即装饰器。

2、装饰器目的

  • 装饰器的目的:装饰器是用于拓展原函数的一种函数,可以在不改变原来函数名或类名的情况下,给原函数增加新的功能。
    一般情况下,我们需要改变原函数,直接改原函数的代码即可,但是实际情况中,并不是所有的函数代码(如核心代码)是不允许随意更改的,此时使用装饰器就更为方便。

二、如何创建装饰器

  • 举个栗子,如有一简单函数
def function1():
    print('i am a funcation!')
  • 现需要将该函数运行时记录日志,在该函数里加上打印日志的代码即可
def function1():
    print('i am a function!')
    print('function1 is running!')
  • 如果有大批函数都需要加上打印日志的功能,则无法一个一个去改代码,最好能使用一个方法,给所有函数调用。
def log(func):
    print('%s is runnning!' % func.__name__)
    return func
@log
def function1():
    print('i am a function!')
function1()
>>>
function1 is runnning!
i am a function!
  • 但是装饰器要求返回的是一个函数对象,所以我们可以将上述代码改造一下,使用嵌套函数,使其返回一个函数对象。
def log(func):
    def _decoration():
        print('%s is runnning!' % func.__name__
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值