「Python实用秘技14」快速优化Python导包顺序
本文完整示例代码及文件已上传至我的
Github仓库https://github.com/CNFeffery/PythonPracticalSkills
这是我的系列文章「Python实用秘技」的第14期,本系列立足于笔者日常工作中使用Python积累的心得体会,每一期为大家带来一个几分钟内就可学会的简单小技巧。
作为系列第14期,我们即将学习的是:快速优化Python导包顺序。

当我们书写Python代码的时候,遵守标准的代码规范可以帮助我们提升代码的可读性和易维护性。而在常见的Python代码规范中,我们在代码开头导包时,建议按照标准库>第三方库>自定义库或相对引用库的顺序组织代码,且各类型导包逻辑中建议按照字母顺序进行排列。
但在日常代码编写过程中,我们很难一直手动保持这样的标准习惯,这时我们就可以使用usort这个实用的工具来辅助优化代码中的导包顺序。
usort由facebook即现在的meta公司进行开源维护,使用pip install usort进行安装后,即可直接针对指定的py文件或整个项目进行导包顺序优化,以下面的代码为例,原始的导包顺序如下,其中demo是同级自定义包:
import pandas as pd
import numpy as np
import feffery_antd_components as fac
import feffery_utils_components as fuc
import re
import dash
from demo import Demo
from dash import html, dcc
通过在终端执行usort format main.py进行优化后,导包顺序被更新为如下状态,可以看到优化后的导包顺序遵循了前面所说的标准规范:
import re
import dash
import feffery_antd_components as fac
import feffery_utils_components as fuc
import numpy as np
import pandas as pd
from dash import dcc, html
from demo import Demo

且usort不会犯一些ide中格式化代码时,将一些必须在前面执行的代码逻辑误移动至导包逻辑后的错误,譬如下面的warnings.filterwarnings(),我们需要其在其他所有导包逻辑之前执行,以起到屏蔽相关警告信息的作用。
如果是使用ide中自带的代码美化快捷功能,可以看到美化后warnings.filterwarnings()被强制挪动到最后:

而usort就智能多了:

本期分享结束,咱们下回见~
「Python实用秘技14」快速优化Python导包顺序的更多相关文章
- 「Python实用秘技10」深度比较Python对象间差异
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第10 ...
- 「Python实用秘技03」导出项目的极简环境依赖
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第3期 ...
- 「Python实用秘技06」逐行监听Python程序的内存消耗
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第6期 ...
- 「Python实用秘技08」一行代码解析地址信息
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第8期 ...
- 「Python实用秘技01」复杂zip文件的解压
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的新系列文章「Python实用秘技」的第1 ...
- 「Python实用秘技02」给Python函数定“闹钟”
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第2期 ...
- 「Python实用秘技04」为pdf文件批量添加文字水印
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第4期 ...
- 「Python实用秘技05」在Python中妙用短路机制
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第5期 ...
- 「Python实用秘技07」pandas中鲜为人知的隐藏排序技巧
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第7期 ...
- 「Python实用秘技09」更好用的函数运算缓存
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第9期 ...
随机推荐
- Rancher系列文章-Rancher v2.6使用脚本实现导入集群
概述 最近在玩 Rancher, 先从最基本的功能玩起, 目前有几个已经搭建好的 K8S 集群, 需要批量导入, 发现官网已经有批量导入的文档了. 根据 Rancher v2.6 进行验证微调后总结经 ...
- Knockin' On PHP's Door ---PHP入门必知(持续更新)
1.->.=> 和 :: 区别: :: 类中调用静态方法时用-> 类中调用属性和非静态方法=> 是键值对,比如在关联数组中用 $arr = ["name&quo ...
- IO流中「线程」模型总结
目录 一.基础简介 二.同步阻塞 1.模型图解 2.参考案例 三.同步非阻塞 1.模型图解 2.参考案例 四.异步非阻塞 1.模型图解 2.参考案例 五.Reactor模型 1.模型图解 1.1 Re ...
- 关于Java中泛型的上界和下界理解
既然聊到了泛型的上下界问题,就先给出几个类的继承关系吧 class Fruit{}class Apple extends Fruit{}class Orange extends Fruit{}clas ...
- GPT-4:思考的曙光还是数据的缩影?
海盗分金,GPT-4初露锋芒 GPT系列模型横空出世后,其是否真实具有思考和推理的能力一直被业界关注.GPT-3.5在多条狗问题和海盗分金问题上表现糟糕.GPT-4在这两个谜题上给出的答案令人惊喜,甚 ...
- 卸载wamp忘记备份MySql,如何恢复MySql数据
大家把wamp卸载了,但是数据库忘记备份了.怎么办?不要急,不要慌!打开wamp所在目录(前提是你没有删),你会发现wamp特别良心的帮你把MySql的data文件夹留下来了,这个时候你只要把这个文件 ...
- Linux内存和磁盘管理(入门)
关于对Linux系统的内存和磁盘的操作 内存和磁盘使用率 查看内存使用率: free.top 查看磁盘使用率: fdisk.df.du free 以KB为单位: $ free total used f ...
- JavaScript基础语法-变量
JavaScript JavaScript - 变量 1. 概念 变量是用于存放数据的容器 通过变量名可以获取数据 并且数据是可修改的 2. 使用 声明变量 只声明不赋值 直接调用 程序会输出unde ...
- 在Linux上安装redis7
1.检测虚拟机环境 1.1 bit检测命令:getconf LONG_BIT(建议使用64bit做开发) 1.2 gcc环境检测:gcc -v 如果不具备gcc环境,则使用yum -y install ...
- TensorFlow - 框架实现中的三种 Graph
文章目录 TensorFlow - 框架实现中的三种 Graph 1. Graph 2. GraphDef 3. MetaGraph 4. Checkpoint 5. 总结 TensorFlow - ...