Python装饰器原理与使用详解

今天早睡
今天早睡
发布时间:2026-10-14 | 3人浏览过
原创

本文深入解析Python装饰器的核心原理与使用方法。通过示例代码展示如何利用@符号这一语法糖,在不修改原函数名的前提下拓展函数功能。文章详细讲解了装饰函数的定义、业务函数的处理以及“帽子”与“人”的结合过程,帮助开发者理解装饰器作为高阶函数的执行机制。

Python装饰器概述

本文旨在简明阐述Python装饰器的运作原理及其具体应用方式,文中提供了详细的示例代码,对读者的学习或实际工作具有显著的参考价值,建议相关读者仔细阅读并参考。

装饰器语法基础

若你已使用Python一段时间,必定对@符号非常熟悉,该符号正是装饰器语法的直观体现。

装饰器的使用步骤

装饰器的标准使用流程相对固定,主要包含以下步骤:

首先,定义一个用于装饰的函数(即“帽子”),该函数也可通过类或偏函数形式实现;

其次,定义你的核心业务函数或类(即“人”);最后,将前述装饰函数应用于业务函数之上。

装饰器核心原理

Python装饰器本质上是一种用于扩展原有函数功能的工具,其核心目标是在保持原函数名(或类名)不变的情况下,为函数添加新的行为或逻辑。

此类函数的特殊之处在于其返回值依然是一个函数,该返回函数内部封装并调用了“原”函数。

代码示例解析


# 有两个已经实现的方法
def f1():
  print("正常流程1")
def f2():
  print("正常流程2")

# 一、需求 我们在每个方法内部加入一个需求
# 定义了一个函数f3,它的参数是一个函数,然后给这个函数嵌入print("需求")。但是想要拓展这一千万个函数功能,
# 就是要执行一千万次f3()函数,所以这样并不理想!接下来,我们可以试着用装饰器来实现,先看看装饰器最原始的面貌。
def f3():
  print("需求")

def f1():
  f3()
  print("正常流程1")

def f2():
  f3()
  print("正常流程2")
# 二、需求 我们现在不需要之前的那个需求了 需要删除f3()

def f1():
  print("正常流程1")

def f2():
  print("正常流程2")

# 根据 python开放-封闭的原则,有些时候核心代码并不可以直接去改,所以在不改动原代码的情况下,我们可以再定义一个函数
# 这里的f3函数就是最原始的装饰器,它的参数是一个函数,然后返回值也是一个函数。
#
# 其中作为参数的这个函数f1()就在返回函数f4()的内部执行。然后在函数f1()前面加上@f3,
#
# f1()函数就相当于注入增加“需求”功能,现在只要调用f1(),它就已经变身为增加“需求”的函数了,
# (不需要重复执行原函数)。
def f3(fn):
  def f4():
    print("需求")
   fn()
  return f4

@f3
def f1():
  print("正常流程1")

以上内容构成了本文的核心知识点,希望能为读者的学习带来帮助,同时也感谢大家的支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表