1 分钟读懂:Python模块化

37 阅读2分钟

202512311240509041

每天1分钟,轻松懂 Python

这是一份有基础、有深度的 Python 核心技术手册

拆分与组织代码

当我们写一个较大的应用程序时,如果都把所有代码都放在几个 py 文件中。有不也多久,这些 py 文件就会变得过于臃肿。

这时,我们就需要考虑将 Python 进行模块化。简单来说,模块化就是对 Python 代码的拆分与重组。

1、简单模块化

文件结构:

Project/  
├── utils.py  
└── main.py  

utils.py 文件,定义函数

def get_sum(a, b):  
    return a + b  

class Encoder:  
    def encode(self, s):  
        return s[::-1] 

main.py 文件,调用函数

from utils import get_sum, Encoder  

print(get_sum(3, 5))  # 8  
encoder = Encoder()  
print(encoder.encode('abc'))  # 'cba'  
2、子文件夹与包

慢慢地,你会发现,把所有文件都堆在一个文件夹下也并不是办法。所以,就有了 “包”

当子文件夹中,创建 __init__.py 文件标记,它就变成了 “包”。

那么,我们来对项目做进一步优化:

文件结构

Project/  
├── utils/  
│   ├── __init__.py  
│   ├── str_utils.py  
│   └── class_utils.py  
└── main.py  

utils/str_utils.py,定义函数

def get_sum(a, b):
    return a + b

utils/class_utils.py,定义函数

class Encoder(object):
    def encode(self, s):
        return s[::-1]

class Decoder(object):
    def decode(self, s):
        return ''.join(reversed(list(s)))

main.py 文件,调用函数

from utils.str_utils import get_sum  
from utils.class_utils import Encoder  

# do something ...

路径与规范

绝对路径:是从项目根目录开始(如 Project/utils/str_utils.py )。

相对路径:依赖文件层级(复杂情况下,不推荐使用相对路径 )。

if __name__ == '__main__'

脚本作为主程序执行时运行代码,被 import 时不执行。

# utils/str_utils.py  
def get_sum(a, b):  
    return a + b  

if __name__ == '__main__':  
    # 主程序执行时运行(如 `python str_utils.py`)  
    print(get_sum(1, 2))  # 3  

关于 if __name__ == '__main__' 更多内容,可以参考下面这篇文章中的 “明确代码入口” 部分:

点击跳转:从脚本到工具:文件批量重命名实战

模块化的工程价值

1、优势
  1. 代码复用:函数 / 类跨文件调用,减少重复逻辑。
  2. 可维护性:功能拆分后,修改局部不影响全局。
  3. 协作开发:多人分工维护不同模块(如 Facebook 单代码库模式 )。
2、大型项目实践
  1. 统一代码库(如 Facebook、Google ):所有模块从根目录导入,避免版本冲突。
  2. 虚拟环境(VirtualEnv):隔离项目依赖,通过 activate 脚本配置环境变量。

-------- 写在最后 --------

关注我,每天1分钟,轻松懂 Python

我的同名公众号正在连载《FastAPI 开发实战》、《Python 核心技术》、《职场》。


点赞 :如果觉得有收获,点赞支持一下吧!

分享 :分享给身边同样对Python感兴趣的朋友!

关注我 :不要错过每一篇 Python 实战内容!


#Python #FastAPI #API #Web开发 #程序员 #编程教程 #效率提升