组织Python代码技巧
一.构建Python项目
首先关注目录结构、文件命名和模块组织。
我
如下图:
<project>
├── src
│ ├── <module>/*
│ │ ├── __init__.py
│ │ └── many_files.py
│ │
│ └── tests/*
│ └── many_tests.py
│
├── .gitignore
├── pyproject.toml
└── README.md
<module> 是您的主要模块。
对此有疑问,可以想象一下使用pip安装模块的时候包名如 pip install pymsql
其中mysql就是包名,再想象一下我们导入模块 import pymysql
其中pymysql也是包名。
通常情况下,它与顶级项目的名称相同,但是你也可以不遵守。
1.设置src目录的原因
有很多项目有不同的做法,有些项目没有src
目录,所有项目模块都分散开,显得项目很杂乱不易于管理。
如下案例:
non_recommended_project
├── <module_a>/*
│ ├── __init__.py
│ └── many_files.py
│
├── .gitignore
│
├── tests/*
│ └── many_tests.py
│
├── pyproject.toml
│
├── <module_b>/*
│ ├── __init__.py
│ └── many_files.py
│
└── README.md
由IDE会对模块名称进行排序,就会导致我们查看时很麻烦。
将模块设置在src内部的主要原因是将所有项目代码集中到一个目录中,CI/CD设置、项目元数据可以放在项目模块之外。
这样做唯一的缺点是你不能直接在Python代码中直接import module_a
,我们需要将项目设置为安装在这个资源库下。
我们将在下面解决这个问题。
2.如何命名文件
2.1.无'文件'
首先,在Python中没有"文件"这一概念,这就是让初学者感到困惑的主要原因。
如果任意目录包含`__init__.py`,那他就是一个由模块组成的目录而不是文件。如果任意目录包含__init__.py
,那他就是一个由模块组成的目录而不是文件。
将每个模块视为一个命名空间
我指的是命名空间,因为你不能确定他们是否有很多函数、类,或者只是常量。它可以包含所有这些,也可以只是一些。
2.2.根据需要将事务放在一起
应该在一个模块中存放多个类(必须这些类与模块相关)。
只有当一个模块太大了或者需要处理不同问题的时候,我们才需要考虑是不是要将其分割。
受其他开发语言(eg:java,c#)的开发经验影响,有很多人认为这是一种不好的做法,但是在Python我推荐这样做
2.3.模块命名尽量命名为复数
根据经验,尽量结合业务背景用复数来给模块进行命名。
不过这条规则也有例外!模块可以命名为 core、main.py 等,以表示一个单一的事物。
根据自身项目进行判断,如果不知道如何命名可以直接用复数命名。
3.命名模块的真实案例
以Google Maps Crawler 项目作为示例。
该项目负责使用Selenium从Google地图中抓取数据并输出
以下是该项目的目录(符合以上三条规则):
gmaps_crawler
├── src
│ └── gmaps_crawler
│ ├── __init__.py
│ ├── config.py
标签:__,...,技巧,Python,代码,py,模块,命名,def
From: https://www.cnblogs.com/zhuoss/p/17501407.html