Python装饰器decorator的简易教程

  • 时间:2018-10-14 23:07 作者:DigiHacker 来源:DigiHacker 阅读:714
  • 扫一扫,手机访问
摘要:?在Python加peewee让数据库访问更简单一文中有几个函数需要连接数据库,这样就导致了少量重复代码1.png有过Java Spring开发经验的同学就要跳出来了,这样不简洁,Spring早即可以AOP了,根本不用操心数据库连接的问题。Python当然可以啊,而且是语言级别就已经支持了,这个功能

?在Python加peewee让数据库访问更简单一文中有几个函数需要连接数据库,这样就导致了少量重复代码

1.png

有过Java Spring开发经验的同学就要跳出来了,这样不简洁,Spring早即可以AOP了,根本不用操心数据库连接的问题。Python当然可以啊,而且是语言级别就已经支持了,这个功能叫decorator,中文都叫装饰器。有没有想起什么?对了,这就是设计模式里的decorator模式

我们创立一个新方法,在方法内再建个wrapper方法,尽管感觉很奇怪,但就是这么写的。当然这两个方法名可以随意起了,样式一致就可


2.png

func 就是要被修饰的方法,做为一个参数传入到db_connect方法里,我们即可以在func前面连接数据库就好。最后返回wrapper。这也是python比较特别的地方,方法是可以作为参数传来传去的。这比Java只能在类级别的反射上做文章吧,一个简单的功能也需要建个类

最后我们在每个需要连接数据库的函数名前加上@db_connect即可以了。每个函数都会自动连接数据库。又有同学说了,这有什么区别,行数没变啊。但这样你不觉得核心代码更简洁了吗?不需要操心数据库连接的问题了。同样你还可以在db_connect里加些日志或者者事务连接什么的,这样就是全局性的改变了,不用你每个函数都去修改一遍。

其实这就是Python元编程,也就是在你的代码上再编程去操作你的代码,尽管听着有点呦口,但是做到后很爽。 有兴趣的同学可以看下Python的官方文档。?

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】从谷歌到手机厂商都下决心了,要清除32位应用这匹“害群之马”(2025-10-17 05:41)
【系统环境|】Windows上使用QEMU创建aarch64(ARM64)虚拟机(2025-10-17 05:40)
【系统环境|】nodejs 如何安装在aarch64平台(2025-10-17 05:39)
【系统环境|】常用git命令-从远程更新代码合并分支、提交代码等(2025-10-17 05:38)
【系统环境|】技术干货|常用的 Git 功能和选项(2025-10-17 05:38)
【系统环境|】掌握git命令,图解一目了然(2025-10-17 05:37)
【系统环境|】总结几个常用的Git命令的使用方法(2025-10-17 05:36)
【系统环境|】这篇 Git 教程太清晰了,很多 3 年经验程序员都收藏了(2025-10-17 05:35)
【系统环境|】Git常用命令及操作指南(2025-10-17 05:35)
【系统环境|】「实用」盘点那些开发中最常用的Git命令(2025-10-17 05:34)
手机二维码手机访问领取大礼包
返回顶部