python函数修饰器定义不调用、会执行吗_Python/函数装饰器概念(详解)

本文深入探讨Python装饰器的概念,通过实例解释如何定义和使用装饰器,包括基本装饰器、带参数的装饰器、装饰器类及在实际应用中的日志输出和函数运行时间计算等。装饰器是Python中用于修改或增强函数功能的函数,能有效提升代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

Python中装饰器的概念

装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。 首先,让我们讨论下如何写你自己的装饰器。

这可能是最难掌握的概念之一。我们会每次只讨论一个步骤,这样你能完全理解它。

以上来自菜鸟教程

装饰器本身就是一个函数,它只不过是对另外一个函数进行了一次封装,它能够把那个函数的功能进行一个强化

例如1:

#!/usr/bin/env python

def day1():

print("My function name is:", day1.__name__)

def main():

day1()

if __name__ == "__main__":

main()

>>> My function name is: day1

在以上代码块中定义了一个函数为:day1, 输出一句话为:My function name is: day1,那么装饰器能够把原来的函数功能上进行一个强化的操作。 在以上函数中输出了一句话,若我们需要在输出一句话如:hello world 若没装饰器 如下:

#!/usr/bin/env python

def day1():

print("hello world")

print("My function name is:", day1.__name__)

def main():

day1()

if __name__ == "__main__":

main()

>>>

hello world

My function name is: day1

若有装饰器如下:

#!/usr/bin/env python

def day2(func):

print("hello world")

return func

@day2

def day1():

print("My function name is:", day1.__name__)

def main():

day1()

if __name__ == "__main__":

main()

>>>

hello world

My function name is: day1

在以上代码块中出现了@符号,以及day2函数,现在不用管它是什么意思,以上代码已经实现了装饰器对原来的函数功能进行了一次强化,但是在第一个代码块中只需要加一句话就可以实现,但是在第二个代码中还需要在写一个函数,感觉会非常麻烦,但是如果被强化的函数有1万个,难道需要一行行去添加吗?,很显然是不可以的,所以接下来开始讲解装饰器。

一、装饰器定义

加粗样式 在定义装饰器之前首先我们需要有一个函数,因为装饰器是对函数进行了一次封装同时对函数进行强化的作用。

1.1、定义一个函数

def tony():

print("my function name is:", tony.__name__) # 每一个函数的名字都可以自带一个变量:__name__就是函数名它自己

def main():

tony()

if __name__ == "__main__":

main()

> my function name is: tony # 输出内容

1.2、使用装饰器对tony函数进行增强操作

#!/usr/bin/env python

def deco_iron(func):

print("开始运行:", deco_iron.__name__)

return func

def tony():

print("my function name is:", tony.__name__)

def main():

tony()

if __name__ == "__main__":

main()

将tony函数传入deco_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值