ITPub博客

首页 > 应用开发 > Python > 好程序员Python培训分享如何写Python装饰器

好程序员Python培训分享如何写Python装饰器

原创 Python 作者:好程序员 时间:2020-07-10 09:25:43 0 删除 编辑

  好程序员Python 培训分享如何写 Python 装饰器, 今天, 好程序员 老师要带大家了解的是关于Python 装饰器的知识点 !Python 装饰器是很容易使用的。任何一个会写 Python 函数的人都能够学会使用装饰器,比如下面这个:

   但是,写出一个装饰器是一个完全不一样的技能。所以,你首先需要理解下面这些:

   闭包

   如何将函数作为" 第一类 " 参数来使用

   变量参数

   参数解包

   甚至是Python 是如何装载源码的一些细节

   写装饰器的最重要的好处是什么呢? 在你每天的开发中,装饰器让你做什么做起来是很容易并且很强大的呢 ?

   一、分析,日志以及指导

   尤其是在大型软件中,我们通常需要专门来测试到底发生了什么,以及记录那些能量化不同行为的指标。

   通过在装饰器内部的函数或者方法里面封装这些重要的事件,这个装饰器能通俗易懂且容易地处理刚才这些所讲的需求。比如:什么的方式可以被用来计数或者其他指标。

   二、验证与运行检查

   Python 的类型系统是相当类型化了的,但是也是很动态的。对于它的这些所有的好处,也意味着某一些 bug 能够悄悄产生,而这些 bug 能够在编译的时候被更类型化的语言 ( 比如 Java) 所捕获。

   即使更长远看,你可能需要强化更复杂的,在数据进出的时候能个性化检查。装饰器能让你易于处理所有这些,并能一次性地应用它到很多函数上。

   假设:你有一堆函数,每个函数都返回一个字典,这个字典包含一个称作“summary” 的字段。

   这个字段的值不能超过80 个字符长度 ; 如果违反了,就是不对的。这里给出一个装饰器,当条件不满足的时候它能够抛出一个值错误 (ValueError) ,如下:

   三、创建框架

   一旦你掌握了装饰器的编程,你将能够受益于使用装饰器的简单语法,而这让你增加语意给你的代码以便容易使用它。这就是下一个能够扩展Python 自身语法的最好的工具。

   实际中,很多流行的开源框架都在使用装饰器。网页应用框架Flask 就使用了装饰器将 URLs 的路由交给那些处理 HTTPS 请求的函数。

   在这里,你有一个被叫做app 的全局的对象,它有一个被称作 route( 路由 ) 的方法并接受特定参数。这个路由方法返回一个被应用到处理函数的装饰器。

   在这个面罩 下发生了一些很错综复杂的的事情,但是从 Flask 的使用者角度看,所有这些复杂性是完全被隐藏起来的了。

   以这样的方式使用装饰器在stock Python 中也有体现。举个例子,完全使用对象系统是有赖于 @classmethod @property 装饰器的:

   这个类有3 个不同的定义声明。但是,他们的语意是各不相同的。

   1 constructor 是一个正常方法

   2 for_winter 是一个类方法且提供一种类似于 车间 的东西

   3 progess 是只读、动态属性

   对于日常来说,@classmethod @property 两个装饰器如此简单以致可以很容易扩展 Python 的对象语意。

   提升你的职业生涯

   编写装饰器在一开始并不容易。它虽然不像火箭科学但是也需要你花很多努力去学习,去排除一些细微差异。而且学习装饰器的确会给你优势。

   当你是你的团队里面懂得并能写好装饰器的那个人的时候,并且你写的装饰器能解决一些实际问题的时候,其他开发者将会使用你的装饰器。

   因为,一旦这些装饰器编写的困难的部分被完成了,装饰器就会很容易使用。这就对你所写的代码产生极大的正面作用。这也会让你成为一个重要角色。

   最后,如果你通过自学对于Python 相关知识点还是半懂非懂。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913864/viewspace-2702838/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    154336