python编程软件用哪个好「推荐常用python编程软件推荐」

大家好,很高兴又和你见面了,感谢你能经常过来支持尤国涵,这次我们就来聊聊python编程软件用哪个好,常用python编程软件推荐,以及代码,类型,钩子等等各种一系列的相关干货,经过我各种整理总结之后,决定写下这篇文章分享给大家。

在开始一个新的Python项目时,很容易不做规划直接进入编码环节。花费少量时间,用最好的工具设置项目,将节省大量时间并带来更快乐的编码体验。

在理想的世界中,所有开发人员使用的依赖库都是相同的,代码将被完美地格式化,禁止常见错误,并且测试将涵盖所有内容。此外,每次提交代码时都会确保符合这些要求。

在本文中,我将介绍如何设置一个这样的理想项目。你可以跟随我的步骤操作,也可以直接开始安装pipx和pipenv,然后生成新项目。

让我们创建一个新的项目目录:

mkdir best_practices
cd best_practices

Python命令行工具与pipx

Pipx是一个方便的实用程序,允许快速安装python命令行工具。我们将用它来安装 pipenv 和 cookiecutter 。

python3 -m pip install --user pipx
python3 -m pipx ensurepath

使用 pipenv 进行依赖管理

Pipenv自动为您的项目创建和管理virtualenv,以及在安装/卸载软件包时从Pipfile添加/删除软件包。它还生成了非常重要的Pipfile.lock文件,用于生成确定性构建。

知道你和你的同事正在使用相同的库版本,可以极大提升信心。Pipenv 可以实现这个点,因此在过去一年多里得到了大量开发者的青睐

pipx install pipenv

使用 black 和 isort 进行代码格式化

Black是代码格式化工具:

Black是不妥协的Python代码格式化程序。通过使用它,意味着您同意放弃对手动格式化细节的控制。作为回报,Black 为你提供速度和确定性,并且无需处理 pycodestyle 的繁琐提示。你将有更多的时间,来处理更重要的事情。

无论是什么项目,Black 格式化后的代码看起来都是一样的。习惯之后,你不会再注意到格式的问题,可以专注于内容。

Black产生的代码差异最小,可以加速代码审查。

isort则用来处理 import 的排序:

isort是可以按字母顺序对 import 进行排序,并自动分成多个部分。

让我们使用pipenv安装它们为开发依赖库,这样就不会让部署版本变得更复杂:

pipenv install black isort --dev

Black 和 isort 的默认选项之间有冲突,因此我们将覆盖 isort 的选项配置,使用 Black 的配置。创建一个 setup.cfg文件并添加此配置:

[isort]
multi_line_output=
3
include_trailing_comma=
True
force_grid_wrap=
0
use_parentheses=
True
line_length=
88

我们可以这样运行这些工具:

pipenv run black
pipenv run isort

用flake8强化风格

Flake8确保我们的代码遵循PEP8的约定。使用pipenv安装:

pipenv install flake8 --dev

就像isort一样,它需要一些配置才能与 Black 配合使用。将此配置添加到 setup.cfg:

[flake8]
ignore = E203,E266,E501,W503
max-line-length = 
88
max-complexity = 
18
select
 = B,C,E,F,W,T4

现在我们可以使用 pipenv run flake8运行flake8。

使用 mypy 检查静态类型

Mypy是Python的一个可选静态类型检查器,旨在结合动态(或“鸭子”)类型和静态类型的好处。Mypy将Python的表现力和便利性与强大的类型系统和编译时类型检查相结合。Mypy对标准Python程序进行类型检查,使用 Python VM 运行 mypy 基本没有运行时的开销。

在Python中使用类型需要慢慢习惯,但好处是巨大的。mypy 官网这样写道:

  • 静态类型可以使程序更容易理解和维护
  • 静态类型可以帮助您更早地发现错误,并减少测试和调试
  • 静态类型可以帮助您在代码投入生产之前找到难以发现的错误
 pipenv install mypy --dev

默认情况下,Mypy将递归检查所有类型注释的导入,这会导致库不包含这些注释时出错。我们需要将mypy配置为仅在我们的代码上运行,并忽略没有类型注释的导入的任何错误。我们假设代码存在于以下配置的 best_practices包中。将如下配置添加到 setup.cfg:

[mypy]
files=best_practices,test
ignore_missing_imports=
true

现在我们可以运行mypy:

pipenv run mypy

mypy 的速查表:
https://mypy.readthedocs.io/en/latest/cheatsheetpy3.html

「干货」推荐一整套 Python 开发工具

使用pytest和pytest-cov进行测试

使用pytest编写测试非常容易,并且消除编写测试的阻力,意味着我们会编写更多的测试!

pipenv install pytest pytest-cov --dev

以下是pytest网站的一个简单示例:

# content of test_sample.py
def
 inc(x):
 
return
 x + 
1
def
 test_answer():
 
assert
 inc(
3
) == 
5

执行示例:

$ pipenv run pytest
=========================== test session starts ============================
platform linux -- 
Python
 
3.x
.y, pytest-
5.x
.y, py-
1.x
.y, pluggy-
0.x
.y
cachedir: $PYTHON_PREFIX/.pytest_cache
rootdir: $REGENDOC_TMPDIR
collected 
1
 item
test_sample.py F [
100
%]
================================= FAILURES =================================
_______________________________ test_answer ________________________________
 
def
 test_answer():
> 
assert
 inc(
3
) == 
5
E 
assert
 
4
 == 
5
E + 
where
 
4
 = inc(
3
)
test_sample.py:
6
: 
AssertionError
========================= 
1
 failed 
in
 
0.12
 seconds =========================

所有的测试都应该放在 test目录中,所以将这个配置添加到 setup.cfg:

[tool:pytest]
testpaths=test

我们还想检查测试覆盖了多少代码。创建一个新文件 .coveragerc,用来返回应用程序代码的覆盖率统计信息,我们再次假设代码位于 best_practices模块中:

[run]
source = best_practices

[report]

exclude_lines = # Have to re-enable the standard pragma pragma: no cover # Don’t complain about missing debug-only code: def __repr__ if self .debug # Don’t complain if tests don’t hit defensive assertion code: raise AssertionError raise NotImplementedError # Don’t complain if non-runnable code isn’t run: if 0 : if __name__ == .__main__.:

我们现在可以运行测试并报告覆盖率

pipenv run pytest --cov --cov-fail-under=
100

如果对应用程序代码的测试覆盖率低于100%,则会失败。

pre-commit 的 Git 钩子

Git钩子允许您在任何时候提交或推送时运行脚本。这就可以支持我们在每次提交/推送时,自动运行所有的格式化和测试。pre-commit可以帮助我们轻松配置这些钩子:

在提交代码审查之前,Git钩子脚本可以帮助识别简单问题。每次提交时运行钩子,自动指出代码中的问题,例如缺少分号,尾随空格和调试语句。在代码审查之前指出这些问题,可以让代码审查者专注于代码架构的变化,而不是浪费时间检查格式问题。

在这里,我们配置在提交Python 文件修改时,执行上述所有检查,并且仅在推送时运行pytest覆盖率测试,因为耗时可能较长。创建一个新文件 .pre-commit-config.yaml:

repos:
- repo: 
local
 hooks:
 - id: isort
 name: isort
 stages: [commit]
 language: system
 entry: pipenv run isort
 types: [python]
 - id: black
 name: black
 stages: [commit]
 language: system
 entry: pipenv run black
 types: [python]
 - id: flake8
 name: flake8
 stages: [commit]
 language: system
 entry: pipenv run flake8
 types: [python]
 exclude: setup.py
 - id: mypy
 name: mypy
 stages: [commit]
 language: system
 entry: pipenv run mypy
 types: [python]
 pass_filenames: 
false
 - id: pytest
 name: pytest
 stages: [commit]
 language: system
 entry: pipenv run pytest
 types: [python]
 - id: pytest-cov
 name: pytest
 stages: [push]
 language: system
 entry: pipenv run pytest --cov --cov-fail-under=
100
 types: [python]
 pass_filenames: 
false

如果你需要跳过这些钩子,你可以运行 git commit–no-verify或 git push–no-verify

「干货」推荐一整套 Python 开发工具

使用cookiecutter生成项目

我们已经看到了理想项目都使用了哪些工具,可以将其固化为一个模板,只需要1个命令 即可生成新项目:

pipx run cookiecutter gh:sourceryai/python-best-practices-cookiecutter

填写项目名称和仓库名称,即可使用模板为你生成项目。

要完成设置,请按照下列步骤操作:

# Enter project directory
cd 

# Initialise git repo
git init
# Install dependencies
pipenv install --dev
# Setup pre-commit and pre-push hooks
pipenv run pre-commit install -t pre-commit
pipenv run pre-commit install -t pre-push

模板项目包含一个非常简单的Python文件和测试来试用这些工具。一旦你对代码感到满意,你就可以做第一个 git commit,这时所有的钩子都会运行。

ok,这篇文章到这里就结束了哈,希望朋友们看了能起到一定的帮助作用,已看完python编程软件用哪个好「推荐常用python编程软件推荐」,但没懂?还是不明白?建议多阅读几遍就可以完全理解了哈!

本文发布者:万事通,不代表寂寞网立场,转载请注明出处:https://www.jimowang.com/p/26682.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jimowangmail@126.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年1月2日 09:23
下一篇 2023年1月2日 09:25

相关推荐

  • 电子书制作方法「推荐手机制作手书app软件推荐」

    最近比较忙,今天吴钰琦又抽时间给大家带来了电子书制作方法,手机制作手书app软件推荐干货,以及关于书刊,电子,效果等等一系列的相关事项,既然来了就别走了,好好的静下心把这篇文章阅读完相信你会有一定的收获哦! 随着社会与经济的高速发展,手机已经成为了人们生活和工作中一件必不可少的工具。电子书刊方便了很多人,电子书刊具有仿真翻书效果,尽可能达到平时我们在翻纸质书…

    自媒体 2022年10月22日
  • 写出复利终值和复利现值的计算公式「秒懂:复利终值和复利现值的公式和用法」

    Hi,大家好,美好的一天从这里开始,今天主要讲解写出复利终值和复利现值的计算公式,复利终值和复利现值的公式和用法,以及复利,现值,本利,利息,报酬率这些一系列的相关干货内容,先说明一下,老司机直接飘过吧,主要是讲解给新手朋友们的哈! 先来介绍一下复利:复利是计算利息的一种方式,复利相对于单利来说,能给投资者带来更大的收益,何为复利就是不仅对本金计算利息,对利…

    2023年1月17日
  • 空调eco模式可以长期开启吗「附:揭露ECO模式使用和禁忌」

    哈喽,小伙伴们大家好,今天杨睿昕废话就不多说了,直接上干货,标题:空调eco模式可以长期开启吗,揭露ECO模式使用和禁忌,以及模式,汽车,效果这些一系列的相关干货内容,整理总结之后,我就想着写这篇文章和大家分享一下,因为毕竟新手朋友还是很多的! 随着时代的发展,汽车节能成为主流思想,众车企也随之在汽车上加入节能模式,就是现在的ECO经济模式。然而所谓的节能模…

    2022年12月1日 自媒体
  • 好友称巴厘岛命案死者正环游世界:环游世界很久了,这一站到了巴厘岛

    亲爱的听众朋友们,我是本站的新闻策划人赵一冉,为您呈现最丰富的资讯。近日,好友称巴厘岛命案死者正环游世界:环游世界很久了,这一站到了巴厘岛成为网络上最受关注的话题之一,引起了不少人的兴趣。让我们一起揭开这个事件的真相,看看到底发生了什么事情! 当地时间5月1日,一对情侣在巴厘岛一酒店身亡,女性死者是江西九江人,男性死者是广西桂林平乐人。目前两名死者的家属已经…

    2023年5月5日
  • 《最亲的人》歌词完整版 陆海涛

    很高兴又和大家见面了,今天许晨曦来和大家聊一聊《最亲的人》歌词完整版 陆海涛,以及山岗,小树,岁月等等相关的各种干货,整理总结之后,我就想着写这篇文章和大家分享一下,因为毕竟新手朋友还是很多的! 翻过了一座山 越过了一道弯 撩动白云蓝天蓝 望眼平川大步迈向前 感谢着人间爱 传承了千万年 亲邻好友笑开颜 梦里梦外喜悦春光暖 花开山岗那个红艳艳 绿水青山不问是何…

    自媒体 2022年12月26日
  • 余额宝一万元一天收益多少「附:余额宝收益现在怎么样!」

    各位朋友们大家好,这次尤越洋想和大家聊聊关于余额宝一万元一天收益多少,余额宝收益现在怎么样!,以及关于余额,基金,收益等等各种相关干货,这些其实都是一些必备知识,只是有些时候我们没有遇到就没有去了解而已! 以前的余额宝很香,因为它开创了小额资金理财的先河。在它横空出世之前,小额资金(比如我们的零花钱)都躺在银行卡里吃0.3%的利息,实在是少得可怜,连通货膨胀…

    自媒体 2022年11月29日