社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

怎么才能写出好看的Python代码?这五个工具你得用上

Python编程 • 3 年前 • 342 次点击  
来自公众号:简说Python

昨天花时间选读了朱雷老师新出版的《Python工匠》的第十三章,简单和大家分享下。

主要给大家介绍分享了一些作者自己在开发大型项目过程中总结下来的经验和技巧,可以分为两部分:代码风格相关和单元测试相关。

2、代码风格相关工具

这里的工具并非什么软件,而是基于Python的标准库/第三方库。

代码风格相关的,作者一共分享了5个库,flake8、isort、black、pre-commit和mypy,都可以直接通过pip install的方式进行安装,如果你想一次安装所有,只需像下面这样即可。

pip install flake8、isort、black、pre-commit mypy

2.1 flake8

flake8 集合了PyFlakes、pycodestyle、McCabe,它们的功能依次是检测代码语法错误和变量名未定义或者使用等、代码格式是否符合PEP8规范、代码中函数的圈复杂度。

McCabe检测的圈复杂度你可能不知道表示什么,简单说就是代码难不难理解(它是根据函数的控制流程图来计算的,具体介绍大家感兴趣可以浏览器查查)。

2.2 isort

isort 用于按字母顺序对代码中的import进行排序,并自动按导入包的类型进行分隔,一般包类型分为:

  • 标准库包(python自带的)
  • 第三方包(需要pip install安装的)
  • 本地包(自己本地写的)
@https://github.com/PyCQA/isort

这个我觉得挺有用的,特别是一些代码量较多的项目里,通常会有很多导入,甚至会有重复导入,通过isort我们可以很清楚的看到导入了哪些包和它们之间的关系。

2.3 black

"Black is the uncompromising Python code formatter. " @github.com/psf/black

如官方介绍,black是一个不妥协的Python代码格式化工具,它有自己的格式化风格(当然都是满足PEP8规范的),几乎没有可以自定义的配置,这样的好处是你不用过分的去纠结用什么编码风格(很多时候同样的代码 满足PEP8规范的写法也有很多种方式)。

2.4 pre-commit

这几个包里,我最喜欢的是pre-commit,通过在github仓库项目根目录设置个配置文件.pre-commit-config.yaml就能自动在提交代码(git commit)前先自动执行配置文件中配置的脚本,比如前面说的代码格式规范,如果发现问题就会终止提交,并输出问题。

.pre-commit-config.yaml一般结构:

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v2.3.0
    hooks:
    -   id: check-yaml
    -   id: end-of-file-fixer
    -   id: trailing-whitespace
-   repo: https://github.com/psf/black
    rev: 21.12b0
    hooks:
    -   id: black

更多配置介绍可以查看@pre-commit.com/#pre-commit-configyaml---hooks

2.5 mypy

mypy是一个静态类型检查工具,会根据代码中的类型注解对代码进行类型检查并查找常见错误。也是一个非常实用的包。

其实我自己平时写Python代码是很少写类型注解的,不过作者说的“虽然相比于传统Python代码,编写类型注解的代码总是更麻烦一些,需要进行额外的工作,但和类型注解所带来的诸多好处相比是完全值得的”,这个我是非常认同的。

而且类型注解,对于大型项目来说更是重要,完善的类型注解可以让伙伴更好地阅读理解代码,也更方便代码的重构或者修改。

3、单元测试相关

上面的代码风格相关工具部分,不管什么领域、应用场景下,基本都有用,接下来分享的单元测试,可能就更偏向于开发、测试相关领域了,我们下回分享。

这里也欢迎大家留言分享下自己平时用的比较多的Python标准库或者第三方库~分享使自己进步,互相分享使社会进步。

那么下期见,我是爱猫爱技术,更爱思思的老表⁽⁽ଘ( ˙꒳˙ )ଓ⁾⁾

--- EOF ---


推荐↓↓↓

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129834
 
342 次点击