Python模块与包的基础概念
模块是包含Python代码的.py文件,可以包含函数、类或变量。通过模块化,代码可被重复使用和组织。
包是包含多个模块的目录,必须包含一个__init__.py文件(可以是空文件)。包用于进一步组织模块,形成层次结构。
创建和使用模块
创建一个名为mymodule.py的文件,内容如下:
def greet(name):
return f"Hello, {name}!"
PI = 3.14159
在另一个文件中导入并使用模块:
import mymodule
print(mymodule.greet("Alice")) # 输出: Hello, Alice!
print(mymodule.PI) # 输出: 3.14159
导入模块的不同方式
直接导入整个模块:
import math
print(math.sqrt(16))
导入特定功能:
from math import sqrt
print(sqrt(16))
使用别名:
import numpy as np
from math import sqrt as square_root
创建和使用包
创建包目录结构:
mypackage/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
在module1.py中:
def func1():
return "Function 1"
在module2.py中:
def func2():
return "Function 2"
使用包中的模块:
from mypackage import module1
from mypackage.module2 import func2
print(module1.func1())
print(func2())
__init__.py的作用
__init__.py文件可以包含包的初始化代码,或定义__all__变量来控制from package import *的行为。例:
__all__ = ['module1', 'module2']
相对导入
在包内部模块中使用相对导入:
# 在module3.py中
from ..module1 import func1
from . import another_module
Python标准库模块示例
常用标准库模块:
os:操作系统接口sys:系统相关功能math:数学运算datetime:日期时间处理json:JSON编码解码
使用示例:
import os
from datetime import datetime
print(os.getcwd())
print(datetime.now())
安装第三方包
使用pip安装第三方包:
pip install requests numpy pandas
使用第三方包:
import requests
import numpy as np
response = requests.get('https://api.example.com')
array = np.array([1, 2, 3])
模块搜索路径
Python解释器按以下顺序搜索模块:
- 当前目录
- PYTHONPATH环境变量指定的目录
- Python安装目录
查看模块搜索路径:
import sys
print(sys.path)
模块和脚本的区别
模块通常设计为被导入使用,而脚本设计为直接运行。使用__name__判断执行方式:
if __name__ == '__main__':
print('This is running as a script')
包分发和安装
创建可安装的包需要setup.py文件:
from setuptools import setup
setup(
name='mypackage',
version='0.1',
packages=['mypackage'],
)
安装本地包:
pip install -e .
虚拟环境的使用
创建虚拟环境:
python -m venv myenv
激活虚拟环境:
- Windows:
myenv\Scripts\activate - Unix/macOS:
source myenv/bin/activate
常用工具和资源
pip:Python包管理器virtualenv:创建隔离的Python环境pytest:测试框架- Python官方文档:https://docs.python.org/3/tutorial/modules.html






