装饰一下你的Python函数吧~
2021-01-04 22:40
465 查看
Paradoxical在敲代码的时候想知道函数的运行时间,于是写了以下的代码。
但是这样每次都要多写几行代码感觉有点麻烦,有没有简便点的方式呢,Paradoxical请教了小哥哥?
惨绿青年:当然有啦,python的装饰器就可以实现相关功能。
我:装饰器是啥鸭?
惨绿青年:装饰器就是为函数添加额外功能的代码。利用装饰器,只需一行代码就可以实现计算运行时间的功能。
惨绿青年:在说装饰器之前,先说下函数的相关知识。之前说过,python的一切都可以看作是对象,所以函数也看作是对象。
惨绿青年:函数里面也可以定义函数,而且可以将里面的函数返回。
惨绿青年:所以可以定义一个外层函数,然后在里面定义一个内层函数,在内层函数里面编写相关代码即可。下面是一个简单的装饰器栗子,添加运行另一个函数前打印hello的功能。
惨绿青年:这样可以不太直观,有点难理解,它实际上是这样的。
我:哦!原来是这样,我赶紧试试~
在Paradoxical强大的动手能力下,一下子就完成了。但是问题来了,要是函数有参数呢?
我:小哥哥,要是函数有参数的话该怎么办鸭?
惨绿青年:修改一下代码就可以了。
我:那个*args和**kwargs是什么鸭?怎么从来没见过?
惨绿青年:*args是不定长参数,**kwargs是关键字参数。此外,函数的参数还能设置默认值,称为默认参数。
惨绿青年:参数的顺序也有规定,顺序是“必需参数→默认参数→不定长参数→关键字参数”。这是为了防止默认参数和关键字参数混淆。
惨绿青年:回到之前的装饰器,因为不知道传入的函数会定义什么参数,所以传入不定长参数和关键字参数即可,python会自动把获取的参数传进入。
我:今天的知识点好多鸭,我得多加练习才行!
相关文章推荐
- Python:二个装饰器装饰一个函数图解和内存指向过程图解,以及装饰器传参
- python 函数 装饰器 内置函数
- python 函数结果缓存一段时间的装饰器
- python学习笔记,返回函数,匿名函数,装饰器
- Python:十、装饰器、函数递归、栈和队列
- python 闭包,函数,装饰器,语法糖
- python教程 内部函数、闭包和装饰器
- python学习笔记之基础操作(七)函数闭包和装饰器
- python:如何批量装饰和取消装饰器函数
- python如何为被装饰的函数保留元数据
- Python的函数装饰器,@staticmethod、@classmethod 和 @property
- python深入笔记--装饰函数
- Python基础(十四)------函数与装饰器
- 利用装饰器给python的函数加上类型限制
- python 对一个函数应用多个装饰器
- python装饰器的4中类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类
- python 9-2 如何为被装饰的函数保存元数据,使用标准库functools中的装饰器wraps 装饰内部包裹函数
- [python]带参数的装饰函数解析
- python基础之高阶函数、匿名函数 、装饰器,文件的读写
- python如何为被装饰的函数保留元数据