python | isort,一个有趣的 自动整理导入语句 的Python 库!

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。

原文链接:isort,一个有趣的 Python 库!

大家好,今天为大家分享一个有趣的 Python 库 - isort。

Github地址:https://github.com/PyCQA/isort

在 Python 编程中,代码的可读性和维护性非常重要。良好的代码风格不仅能提升代码的可读性,还能减少错误的发生。模块导入顺序的规范是 Python 代码风格的重要部分,但手动整理导入顺序可能会很繁琐。isort 库是一个用于自动排序和整理 Python 导入语句的工具,能够根据配置文件或默认规则自动调整导入顺序,使代码更加整洁和符合 PEP 8 标准。本文将详细介绍 isort 库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

1 安装

要使用 isort 库,首先需要安装它。以下是安装步骤:

使用 pip 安装

可以通过 pip 直接安装 isort

pip install isort

2 特性

  1. 自动排序:根据配置文件或默认规则自动排序导入语句。

  2. 配置灵活:支持多种配置方式,可以通过配置文件、命令行参数或代码注释来定制导入排序规则。

  3. 集成工具:可以与 pylintflake8 等代码检查工具集成,提供一致的代码风格检查和修复。

  4. 命令行工具:提供强大的命令行接口,方便快速整理导入语句。

  5. API 支持:提供 Python API,可在代码中灵活使用。

3 基本功能

3.1 自动排序导入语句

使用 isort 可以自动排序导入语句,以下是一个示例:

# 原始代码
import os
import sys
import re
import json

# 排序后
import json
import os
import re
import sys

在命令行中运行 isort 来整理导入语句:

isort my_script.py

3.2 检查导入排序

可以使用 isort 检查代码中的导入语句是否已排序:

isort --check-only my_script.py

3.3 显示排序差异

isort 支持显示排序前后的差异,方便查看修改内容:

isort --diff my_script.py

4 高级功能

4.1 配置文件

isort 支持多种配置文件,可以在项目根目录创建 .isort.cfgpyproject.toml 或 setup.cfg 文件进行配置。

以下是一个 .isort.cfg 文件的示例:

[settings]
profile = black
line_length = 88
multi_line_output = 3
include_trailing_comma = true
known_third_party = flask, requests

4.2 分组和排序规则

isort 支持自定义导入分组和排序规则,以下是一个示例:

[settings]
known_first_party = my_project
known_third_party = flask, requests
sections = FUTURE, STDLIB, THIRDPARTY, FIRSTPARTY, LOCALFOLDER
default_section = THIRDPARTY

4.3 集成代码检查工具

isort 可以与 pylintflake8 等代码检查工具集成,以下是与 flake8 集成的示例:

# .flake8 配置文件
[flake8]
extend-ignore = E203
max-line-length = 88

在命令行中运行 flake8 和 isort 进行检查:

flake8 .
isort --check-only .

4.4 使用 Python API

除了命令行工具,isort 还提供了 Python API,可以在代码中灵活使用。以下是一个使用 Python API 整理导入语句的示例:

import isort

# 原始代码
code = """
import os
import sys
import re
import json
"""

# 排序导入语句
sorted_code = isort.code(code)

print(sorted_code)

5 实际应用场景

5.1 代码格式化工具链

在团队开发中,使用 isort 与 black 等代码格式化工具集成,确保代码风格一致。

# 使用 black 格式化代码
black my_project/

# 使用 isort 整理导入语句
isort my_project/

5.2 预提交钩子

在项目中使用预提交钩子,在代码提交前自动整理导入语句。

# .pre-commit-config.yaml 文件
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v3.4.0
  hooks:
  - id: trailing-whitespace
  - id: end-of-file-fixer

- repo: https://github.com/pre-commit/mirrors-isort
  rev: v5.9.3
  hooks:
  - id: isort

在命令行中安装预提交钩子:

pre-commit install

5.3 CI/CD 管道

在 CI/CD 管道中集成 isort,确保每次构建时自动检查导入排序。

# .github/workflows/ci.yml 文件
name: CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.8'
    - name: Install dependencies
      run: |
        pip install isort
    - name: Check import sorting
      run: |
        isort --check-only .

6 总结

isort 库是一个功能强大且易于使用的工具,能够帮助开发者自动整理 Python 代码中的导入语句。通过支持自动排序、灵活配置、与代码检查工具集成和命令行工具,isort 提供了强大的功能和灵活的扩展能力。本文详细介绍了 isort 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 isort 库的使用,并在实际项目中发挥其优势。无论是在代码格式化工具链、预提交钩子还是 CI/CD 管道中,isort 库都将是一个得力的工具。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

以下是100个Python小技巧: 1. 使用for循环可以遍历列表、字符串等可迭代对象。 2. 使用range()函数生成指定范围的数字序列。 3. 使用enumerate()函数可以同时获得元素索引和值。 4. 使用zip()函数可以同时遍历多个可迭代对象。 5. 使用列表推导式可以快速生成列表。 6. 使用集合可以进行高效的集合操作。 7. 使用字典可以进行键值对的映射。 8. 使用切片可以快速获取列表、字符串的子序列。 9. 使用函数可以封装可复用的代码块。 10. 使用类可以实现面向对象的编程。 11. 使用模块可以组织和管理代码。 12. 使用异常处理可以捕获和处理程序的错误。 13. 使用with语句可以自动管理资源的释放。 14. 使用装饰器可以增强函数的功能。 15. 使用生成器可以按需计算大量数据。 16. 使用协程可以实现异步编程。 17. 使用多线程可以并发执行任务。 18. 使用多进程可以充分利用多核处理器。 19. 使用文件操作可以读写文件。 20. 使用正则表达式可以进行复杂的文本匹配。 21. 使用time模块可以获取当前时间和进行时间操作。 22. 使用random模块可以生成随机数。 23. 使用math模块可以进行数学运算。 24. 使用json模块可以进行JSON数据的处理。 25. 使用pickle模块可以进行对象的序列化和反序列化。 26. 使用os模块可以进行文件和目录的操作。 27. 使用sys模块可以获取和修改Python解释器的运行时环境。 28. 使用re模块可以进行正则表达式匹配。 29. 使用argparse模块可以解析命令行参数。 30. 使用logging模块可以进行日志记录。 31. 使用unittest模块可以编写和执行单元测试。 32. 使用requests可以发送HTTP请求。 33. 使用BeautifulSoup可以解析HTML文档。 34. 使用numpy可以进行数组和矩阵计算。 35. 使用pandas可以进行数据处理和分析。 36. 使用matplotlib可以进行数据可视化。 37. 使用scikit-learn可以进行机器学习。 38. 使用tensorflow可以进行深度学习。 39. 使用flask可以构建Web应用。 40. 使用Django可以构建全功能的Web应用。 41. 使用SQLite数据可以进行轻量级的数据存储。 42. 使用MySQL数据可以进行关系型数据存储。 43. 使用MongoDB数据可以进行文档型数据存储。 44. 使用Redis数据可以进行缓存和键值存储。 45. 使用Elasticsearch可以进行搜索和分析。 46. 使用OpenCV可以进行图像处理和计算机视觉。 47. 使用pygame可以进行游戏开发。 48. 使用tkinter可以进行桌面应用程序开发。 49. 使用wxPython可以进行跨平台的GUI开发。 50. 使用Flask-RESTful可以构建RESTful API。 51. 使用Celery可以进行异步任务的调度和执行。 52. 使用pytest可以进行更简洁和灵活的单元测试。 53. 使用Selenium可以进行Web自动化测试。 54. 使用Faker可以生成随机的测试数据。 55. 使用IPython可以进行交互式的开发和调试。 56. 使用Jupyter Notebook可以进行数据分析和可视化。 57. 使用Spyder可以进行科学计算和Python开发。 58. 使用cookiecutter可以快速构建项目模板。 59. 使用virtualenv可以创建和管理Python虚拟环境。 60. 使用pip可以安装和管理Python包。 61. 使用pyenv可以管理多个Python版本。 62. 使用conda可以创建和管理Python环境。 63. 使用autopep8可以自动格式化Python代码。 64. 使用black可以自动格式化Python代码。 65. 使用flake8可以检查Python代码是否符合PEP8规范。 66. 使用bandit可以检查Python代码中的安全漏洞。 67. 使用isort可以自动排序Python导入语句。 68. 使用mypy可以进行静态类型检查。 69. 使用pylint可以进行代码质量检查。 70. 使用pyinstaller可以将Python程序打包成可执行文件。 71. 使用cx_Freeze可以将Python程序打包成可执行文件。 72. 使用py2exe可以将Python程序打包成可执行文件。 73. 使用pyodbc可以连接和操作数据。 74. 使用paramiko可以进行SSH远程操作。 75. 使用fabric可以进行任务的自动化部署。 76. 使用pytest-django可以简化Django的单元测试。 77. 使用django-rest-framework可以快速构建RESTful API。 78. 使用scrapy可以进行Web爬虫。 79. 使用sqlalchemy可以进行高级数据操作。 80. 使用pymongo可以连接和操作MongoDB数据。 81. 使用tqdm可以在循环中显示进度条。 82. 使用click可以构建命令行接口。 83. 使用cProfile可以进行性能分析。 84. 使用line_profiler可以逐行分析代码性能。 85. 使用memory_profiler可以分析内存使用情况。 86. 使用profilehooks可以进行分析函数调用性能。 87. 使用PyInstaller可以将Python程序打包成可执行文件。 88. 使用Openpyxl可以读写Excel文件。 89. 使用Pillow可以进行图像处理。 90. 使用pyautogui可以进行图像识别和自动化操作。 91. 使用pytesseract可以进行文字识别。 92. 使用pywin32可以操作Windows系统API。 93. 使用pyserial可以进行串口通信。 94. 使用opencv-python可以进行图像处理。 95. 使用catboost可以进行梯度提升决策树算法。 96. 使用fasttext可以进行文本分类和词向量训练。 97. 使用gensim可以进行文本相似度计算。 98. 使用jieba可以进行中文分词。 99. 使用lightgbm可以进行梯度提升算法。 100. 使用xgboost可以进行梯度提升算法。 这些小技巧涵盖了Python的各个方面,包括语法、标准、第三方和常见开发任务。通过学习和应用这些技巧,可以提高Python编程的效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值