您的位置:首页 > 编程语言 > Python开发

装饰一下你的Python函数吧~

2021-01-04 22:40 465 查看


Paradoxical在敲代码的时候想知道函数的运行时间,于是写了以下的代码。


但是这样每次都要多写几行代码感觉有点麻烦,有没有简便点的方式呢,Paradoxical请教了小哥哥?


惨绿青年:当然有啦,python的装饰器就可以实现相关功能。


我:装饰器是啥鸭?


惨绿青年:装饰器就是为函数添加额外功能的代码。利用装饰器,只需一行代码就可以实现计算运行时间的功能。


惨绿青年:在说装饰器之前,先说下函数的相关知识。之前说过,python的一切都可以看作是对象,所以函数也看作是对象。


惨绿青年:函数里面也可以定义函数,而且可以将里面的函数返回。


惨绿青年:所以可以定义一个外层函数,然后在里面定义一个内层函数,在内层函数里面编写相关代码即可。下面是一个简单的装饰器栗子,添加运行另一个函数前打印hello的功能。


惨绿青年:这样可以不太直观,有点难理解,它实际上是这样的。


我:哦!原来是这样,我赶紧试试~


在Paradoxical强大的动手能力下,一下子就完成了。但是问题来了,要是函数有参数呢?


我:小哥哥,要是函数有参数的话该怎么办鸭?


惨绿青年:修改一下代码就可以了。


我:那个*args和**kwargs是什么鸭?怎么从来没见过?


惨绿青年:*args是不定长参数,**kwargs是关键字参数。此外,函数的参数还能设置默认值,称为默认参数。





惨绿青年:参数的顺序也有规定,顺序是“必需参数→默认参数→不定长参数→关键字参数”。这是为了防止默认参数和关键字参数混淆。


惨绿青年:回到之前的装饰器,因为不知道传入的函数会定义什么参数,所以传入不定长参数和关键字参数即可,python会自动把获取的参数传进入。


我:今天的知识点好多鸭,我得多加练习才行!


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: