零基础学习 Python 之装饰器才露尖尖角

写在之前

今天我们要讲的装饰器,本质上也是闭包的一种应用,所以如果你没有看过昨天的文章,建议在看下面的内容之前回头去看一下闭包。加群:839383765 可以获取Python入门学习资料!

装饰器

我们到现在已经知道,函数是对象,可以被传递,也能被嵌套。下面我们先来看一个很常见的小例子:

上述的例子中,first() 函数的参数是一个函数,如果我们用下面的方式来调用此函数:

结果如下:

这个就是向 first() 传递了函数对象 man()。对于这么一个问题,可以换成下面这种写法:

你如果对比之前的那段代码,你会发现这里面多了个奇怪的 @first,我们常常把类似的这种东西叫做语法糖,也叫糖衣语法,至于为什么。。可能是因为发明这个术语的人喜欢吃糖???(抖个机灵

维基百科中关于语法糖的解释是这样的:指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说,使用语法糖可以增加程序的可读性,从而减少程序代码出错的机会。

上面那段解释看看就好,我们用语法糖这种方式执行上面的代码的结果如下:

你会发现这种方式的结果和之前的结果一模一样,以上就是所谓的装饰器及其应用,first() 是装饰器函数,使用 @first 来装饰 man() 函数。

如果你看到这,你就会发现其实装饰器本质上就是一个函数,它把一个函数当做输入并且返回给另外的一个函数,就如上面所演示的一样。当然不只是函数可以作为输入,被装饰的类也是可以的,至于什么是类,使我们下个章节要学习的内容,如果感兴趣的话,可以提前看一看。

写在之后

这篇文章实际上只是介绍了装饰器的概念性的东西,关于装饰器,因为上面我说了,除了函数,被装饰的类也是可以的,因为还没有到类的部分,所以在这里只是浅尝辄止,等后面学类的时候,会把这部分再深入细致的探索下去,把这部分的坑给填上,敬请期待。

结语

更多python记得关注我的公众号 从0到1Python之路

猜你喜欢

转载自blog.csdn.net/weixin_42209553/article/details/86656830