写出这10 行 Python代码后,我得到了无与伦比的优越感
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了写出这10 行 Python代码后,我得到了无与伦比的优越感,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2683字,纯文字阅读大概需要4分钟。
内容图文
![写出这10 行 Python代码后,我得到了无与伦比的优越感](/upload/InfoBanner/zyjiaocheng/737/a5155ef0e1b14c0c8732f81637445e3d.jpg)
就这 10 行代码能干啥?
为了表明我不是标题党,我得先亮出这 10 行代码:
class Event:
handlers = dict()
def attach(self, handler_id, handler):
if not callable(handler):
raise TypeError('handler object is not callable')
self.handlers.update({handler_id: handler})
def notify(self):
return [handle_func() for _, handle_func in self.handlers.items()]
有的童鞋可能笑了,就这 10 行代码,连个类实例和方法调用都没有,能干嘛?首先,你要知道我为了这 10 行代码,我把所有注释都删了,其次,你是对的,所以请看下面的代码(阴险.jpg):
def update_cache(**kwargs):
print('<update_cache>')
def send_notification(**kwargs):
print('<send_notification>')
if __name__ == '__main__':
order_completed_event = Event()
order_completed_event.attach(handler_id='update_cache', handler=update_cache)
order_completed_event.attach(handler_id='send_notification', handler=send_notification)
order_completed_event.notify()
这玩意儿是啥?
有的童鞋可能看出来了,这是一个简易的事件组件(不同编程语言、框架叫法不一样),也可以说是观察者模式的一种简单实现。
观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。——维基百科
要怎么用?
简单解读一下上面的示例代码:
- 实例化一个
订单完成事件
- 往这个事件注册
更新缓存
和发送通知
处理器 - 然后直接调用事件的
notify
方法,执行所有已注册的处理器,最后返回所有处理器的执行结果
示例代码中的业务逻辑,是我抽象的一个大家都比较容易理解的业务场景,当一个订单完成后,一般除了订单本身的主流程之外,多多少少都需要执行一些和订单主流程关系不大的逻辑,例如顺便更新点什么东西或是通知一下买家/卖家,这么说,现在只需要在订单完成的时候,调用一下 订单完成事件
的 notify
方法,就可以完成相关的逻辑了。
为什么要用?
在很多项目中(起码我见过的),大多都会把上述提到的跟订单主流程关系不大的逻辑写在订单主流程后,或是把业务服务放在那儿进行调用,而这么做,代码会越来越臃肿,维护起来也不方便,有强迫症的人看着也不舒服,这一切都是因为逻辑的耦合导致的,而我们可以用上面的事件组件进行优化,达到逻辑的解耦,让程序更容易维护。
你可以不用造轮子
本文的实例代码,只是一个极其简单的轮子,甚至连轮子都说不上,写这么一个示例只是为了让大家能大致明白实现的原理。现流行的语言/框架,几乎都有提供对应的组件:
Django
-Signals
Symfony
-EventDispatcher Component
Laravel
-Events
Spring
-Events
如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!交流经验!自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地
总结
虽然我只是写了 10 行代码,但希望这 10 行代码能给你一点优化代码的灵感。
内容总结
以上是互联网集市为您收集整理的写出这10 行 Python代码后,我得到了无与伦比的优越感全部内容,希望文章能够帮你解决写出这10 行 Python代码后,我得到了无与伦比的优越感所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。