
每天1分钟,轻松懂 Python
这是一份有基础、有深度的 Python 核心技术手册
当我们写一个较大的应用程序时,如果都把所有代码都放在几个 py 文件中。有不也多久,这些 py 文件就会变得过于臃肿。
这时,我们就需要考虑将 Python 进行模块化。简单来说,模块化就是对 Python 代码的拆分与重组。
文件结构:
Project/ ├── utils.py └── main.py utils.py 文件,定义函数
defget_sum(a, b):return a + b classEncoder:defencode(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' 慢慢地,你会发现,把所有文件都堆在一个文件夹下也并不是办法。所以,就有了 “包”
当子文件夹中,创建 __init__.py 文件标记,它就变成了 “包”。
那么,我们来对项目做进一步优化:
文件结构
Project/ ├── utils/ │ ├── __init__.py │ ├── str_utils.py │ └── class_utils.py └── main.py utils/str_utils.py,定义函数
defget_sum(a, b):return a + butils/class_utils.py,定义函数
classEncoder(object):defencode(self, s):return s[::-1]classDecoder(object):defdecode(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 defget_sum(a, b):return a + b if __name__ == '__main__': # 主程序执行时运行(如 `python str_utils.py`) print(get_sum(1, 2)) # 3 关于 if __name__ == '__main__' 更多内容,可以参考下面这篇文章中的 “明确代码入口” 部分:
点击跳转:从脚本到工具:文件批量重命名实战
activate 脚本配置环境变量。-------- 写在最后 --------
关注我,每天1分钟,轻松懂 Python
我的同名公众号正在连载《FastAPI 开发实战》、《Python 核心技术》、《职场》。
点赞 :如果觉得有收获,点赞支持一下吧!
分享 :分享给身边同样对Python感兴趣的朋友!
关注我 :不要错过每一篇 Python 实战内容!