设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

特别推荐!优化#8203;Python开发环境的几个技巧,实现自动化让你远离烦恼(2)

发布时间:2019-11-11 13:58 所属栏目:21 来源:读芯术
导读:Black是一种让程序员在编写python代码时能将精力集中于核心内容的工具。它自动为代码添加格式,避免程序员手动添加格式。因为Black的效果非常好,我们把它添加到dsexample中,让它为所有的文件添加格式。 #Weaddbla

Black是一种让程序员在编写python代码时能将精力集中于核心内容的工具。它自动为代码添加格式,避免程序员手动添加格式。因为Black的效果非常好,我们把它添加到dsexample中,让它为所有的文件添加格式。

  1. # We add black as a developmentdependency with --dev as we don't 
  2. # need it when it comes to production 
  3. poetry add --dev black=19.3b0 
  4. # Assume we are inside the current toplevel dsexample folder 
  5. poetry run black . 

很好,现在所有的文件看起来非常整齐了。

4. 类型纠正(Type-Correctness)

自Python3.5开始(如果我记错了请纠正),类型注释开始成为标准库的一部分通过类型注释,代码更好理解,更易维护,不易出错。为什么会不易出错呢?因为可以静态地检查变量和函数的类型是否符合预期。当然,必须是自动完成的。

下面介绍mypy。

Mypy是一种静态python代码检查器,作用是在错误发生之前找到他们。使用poetry向项目中添加mypy并进行代码检查与添加black一样简单。

  1. # We add mypy as a developmentdependency with --dev as we don't 
  2. # need it when it comes to production 
  3. poetry add --dev mypy 
  4. # Assume we are inside the current toplevel dsexample folder 
  5. poetry run mypy . 

运行mypy也可能导致很多麻烦。当然,可以将其设置为只对你关心的错误发出警告。这可以通过在项目中添加mypy.ini文件实现。

5. 将自动化工具自动化(Automate the Automation)

使用black和mypy,我们不再需要手工为代码添加格式,并且可以避免不必要的错误。但是我们仍需要手动使用这两个工具,这两个工具不是应该也自动化吗?

是的!

Pre-commit可以完成一切。

Pre-commit工具是在代码提交到仓库前执行检查(我默认读者的代码处在git的控制下)。无法通过检查的代码将被拒绝。这样代码仓库就永远不会出现格式不整齐或是未经类型检查的代码,以及任何其他你需要检查错误的代码。

现在来安装pre-commit。

可以使用poetry将其直接安装在项目里,也可以安装在本地机器里。笔者倾向于后者,因为precommit只在本地使用,而不在CI/CD服务器上。相反,black和mypy在CI/CD服务器上运行,因此,将它们添加到项目的dev依赖项是有意义的。笔者建议使用下面方法通过现有的工具虚拟环境安装它

  1. # Install pre-commit into the tools virtual env 
  2. pyenv activate tools 
  3. pip install pre-commit 
  4. # Leave the virtual env 
  5. pyenv deactivate 
  6. # As we have already added the tool venv, it will work directly 
  7. pre-commit --version 

要使用pre-commit,首先需要向顶级文件夹中添加一个名为.pre-commit-config.yarm的文件。在该文件里,你需要配置所有应该运行的钩子。在mypy与Black的环境下,文件内容如下所示。

  1. repos:-   repo: https://github.com/ambv/black    rev: 19.3b0    hooks:    - id: black      language_version: python3.7-   repo: https://github.com/pre-commit/mirrors-mypy    rev: v0.740    hooks:    - id: mypy 

最后,你必须执行以下命令以设置钩子。

  1. # I assume your are in the toplevel folder 
  2. pre-commit install 

现在,钩子函数(hook)将在每次提交时运行。Black工具的钩子函数不仅会检查格式,还会相应地为文件添加格式。每次添加新的钩子函数时,建议一开始在所有文件中手动运行pre-commit,因为它只能作用于上次提交之后更改过的文件。

  1. pre-commit run --all-files 

就这样,对自动化工具的自动化完成了。

总结

有很多工具可以帮助你专注于重要的事情。此处笔者只介绍了其中的几个。当然,还有更多。希望你学到了新的东西后,可以更加专注于代码本身。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读