Python 装饰器
admin
2023-07-30 20:46:42
0

通过前面的学习,我们知道可以把函数复制给变量,通过该变量调用函数。

函数对象中有一属性为__name__,通过funName.__name__可以获取函数的名字。


通过__name__属性获取函数名

当我们需要给某些函数运行期间动态的添加某些功能时,则需要涉及装饰器,即“Decoeator”,它可以增强函数的功能,它的定义有点复杂,但是使用起来却非常的灵活与方便。其主要是对函数其修饰作用,它可以让我们在不修改原函数的基础上,在执行函数的前后执行别的代码。

装饰器的定义:

我们先定义一个函数,函数里镶嵌另一个函数,里层函数返回的是外层函数的的参数,外层函数返回的是里层函数。

下面的两个例子是有在错误中发现的,一个返回的是外层函数的参数名,另一个返回了参数执行后的结果。

要使一普通函数变为一个装饰器,则需在刚才所定义的外层函数前加@(即@decorator),然后再定义其里层函数的具体内容。

当我们调用其里层函数时,不仅会输出其函数内容,还会输出我们前面定义

print \’call %s()\’ %func.__name__,即再其执行结果前会打印没成为装饰器前定义的输出。即call name(),且date()中是可以接收任何参数的。


没注意返回了函数名


返回了执行函数后的结果


带参数的装饰器

从上面的例子可以知道,我们在调用date()的时候,不仅执行了date()函数,同意也执行了decorator函数,且时间上先于date(),即对date()起修饰作用.


输出函数对象名

从输出的函数名中,我们知道定义成为装饰器后,函数名date变为了fun,即前面定义decorator函数时,返回的函数。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...