Python基础学习--关于函数装饰器的浅薄理解&使用

简介: Python基础学习--关于函数装饰器的浅薄理解&使用

一、装饰器是什么?

python的装饰器就是一种拓展被装饰函数功能的一种函数,它的目的在于不改变被装饰函数的源代码和调用方式的情况下增加新的功能。

举个例子

你的手机只有打接电话,发短信的功能,某天,你要给你的手机增加新的功能,比如上网,即其他功能不变,单纯增加上网这一个功能

二、用法

1.不带参数的函数装饰器

代码如下(示例):

1. def funa(f):  #将函数f作为参数  ①
2.     def funb():   #定义内部函数funb  ③
3.         print("hello")
4.         f()       #调用函数f    ④
5.         print("china")
6.     return funb   #返回一个函数funb  ②
7. 
8. @funa
9. def fund():  
10.     print("你好,中国")  
11. fund()  
12. #outputs:hello
13. #        你好,中国
14. #        china

以下装饰器写法完全等价于右边

1. 
2. @funa                  <==>    fund=funa(fund)
3. def fund() :                    fund()  
4. print("你好,中国")
5. fund()

运行流程示意如下

2.带参数的函数装饰器

代码如下(示例):

1. import time
2. 
3. def timeit(iteration):
4.     def inner(f):
5.         def wrapper(*args,**kwargs):
6.             start=time.time()
7.             for i in range(iteration):
8.                 ret=f(*args,**kwargs)   #*args,**kwargs 不定长参数,可写入多个参数
9.             print(time.time()-start)
10.             return ret
11.         return wrapper
12.     return inner
13. 
14. @timeit(3)
15. def double(x):
16.     return x*2
17. double(1)
18. # outputs:3.0994415283203125e-06

注意:这种写法是先计算装饰器里的参数,然后把double(1)传入函数timeit中,并最终返回结果显示

@timeit(3)

def double(x):

return x*2

double(1)

等价于

double=timeit(3)(double)

doubel(1)

运行流程示意如下

相关文章
|
8天前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
88 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
6天前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
29 0
|
3天前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
4天前
|
存储 数据安全/隐私保护 索引
|
6天前
|
Python
探索Python中的装饰器:从基础到高级
【10月更文挑战第11天】 在这篇文章中,我们将深入探讨Python装饰器的强大功能和灵活应用。装饰器是Python中一个非常有趣的特性,它允许我们修改或增强函数的行为,而无需直接修改函数本身的代码。通过使用装饰器,我们可以实现横切关注点(AOP)的编程范式,提高代码的可重用性和模块化。本文将介绍装饰器的基本概念、使用方法以及如何创建自定义装饰器。同时,我们还将探讨装饰器的一些高级用法,如带参数的装饰器、多层装饰器和偏函数装饰器等。
15 5
|
4天前
|
存储 程序员 Python
了解Python中的装饰器 | python小知识
装饰器是Python中一个非常强大且灵活的特性,它允许程序员在不改变函数本身的情况下扩展或修改函数的行为。本文将带你从零开始,了解装饰器的工作原理,常见的基本操作,并深入介绍`@dataclass`和`@property`装饰器的用法。 【10月更文挑战第10天】
16 2
|
4天前
|
设计模式 数据安全/隐私保护 开发者
Python中的装饰器:从基础到高级应用
本文将深入探讨Python中一个极其强大且灵活的特性——装饰器。装饰器本质上是一个函数,它允许我们对另一个函数或类进行扩展,而无需永久性地修改它们。这一特性使得装饰器成为实现横切关注点(如日志记录、访问控制等)的理想工具。我们将从装饰器的基本概念入手,逐步讲解其工作原理,并通过一系列示例展示如何在实际项目中巧妙利用装饰器来提升代码的可维护性和可读性。最后,我们还将探索一些高级装饰器技巧,帮助你在编写Python程序时更加游刃有余。
|
4天前
|
缓存 程序员 开发者
探索Python中的装饰器:一种优雅的代码增强技巧
【10月更文挑战第13天】 在本文中,我们将深入探讨Python中的装饰器,这是一种强大的工具,它允许程序员以简洁而高效的方式扩展或修改函数和类的行为。通过具体示例,我们将展示如何利用装饰器来优化代码结构,提高开发效率,并实现如日志记录、性能计时等常见功能。本文旨在为读者提供一个关于Python装饰器的全面理解,从而能够在他们的项目中灵活运用这一技术。
15 1
|
5天前
|
索引 Python
Python中的其他内置函数有哪些
【10月更文挑战第12天】Python中的其他内置函数有哪些
7 1
|
5天前
|
机器学习/深度学习 人工智能 架构师
Python学习圣经:从0到1,精通Python使用
尼恩架构团队的大模型《LLM大模型学习圣经》是一个系统化的学习系列,初步规划包括以下内容: 1. **《Python学习圣经:从0到1精通Python,打好AI基础》** 2. **《LLM大模型学习圣经:从0到1吃透Transformer技术底座》**
Python学习圣经:从0到1,精通Python使用