装饰一下你的Python函数吧~


Paradoxical在敲代码的时候想知道函数的运行时间,因而写了如下的代码。
python

图片


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


惨绿青年:固然有啦,python的装饰器就能够实现相关功能。ide


我:装饰器是啥鸭?函数


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


惨绿青年:在说装饰器以前,先说下函数的相关知识。以前说过,python的一切均可以看做是对象,因此函数也看做是对象。orm

图片


惨绿青年:函数里面也能够定义函数,并且能够将里面的函数返回。对象

图片


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

图片


惨绿青年:这样能够不太直观,有点难理解,它其实是这样的。图片

图片


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


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

图片


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


惨绿青年:修改一下代码就能够了。

图片


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


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

图片


图片


图片


图片


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


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

图片


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

相关文章
相关标签/搜索