Python语言模块、包解析-10天学会Python
什么是模块?
模块是一个包含Python定义和语句的文件。模块用于将代码组织成更小的、更易管理的部分,便于重用和共享。
创建模块
创建一个Python文件(例如mymodule.py),在其中定义函数、类和变量。
示例:mymodule.py
# mymodule.py
def greet(name):
return f"Hello, {name}!"
PI = 3.14159
导入模块
使用import语句导入整个模块,或使用from ... import ...导入模块中的特定部分。
import 模块名
from 模块名 import 函数/类/变量
# 导入整个模块
import mymodule
print(mymodule.greet("Alice")) # 输出: Hello, Alice!
print(mymodule.PI) # 输出: 3.14159
# 导入模块中的特定函数
from mymodule import greet
print(greet("Bob")) # 输出: Hello, Bob!
# 导入模块中的所有内容
from mymodule import *
print(greet("Charlie")) # 输出: Hello, Charlie!
print(PI) # 输出: 3.14159
模块搜索路径
Python在导入模块时,会按照以下顺序搜索模块:
- 当前目录。
- PYTHONPATH环境变量中指定的目录。
- 标准库目录。
- 任何.pth文件指定的目录。
常用标准库模块
- sys:提供对解释器使用或维护的一些变量的访问。
- os:提供与操作系统交互的功能。
- math:提供数学函数。
- datetime:处理日期和时间。
- json:处理JSON数据。
import math
print(math.sqrt(16)) # 输出: 4.0
import datetime
now = datetime.datetime.now()
print(now) # 输出当前日期和时间
命名空间和作用域
每个模块都有自己的命名空间。导入模块后,可以通过模块名访问其内容,避免命名冲突。
# module1.py
def func():
print("Module1 func")
# module2.py
def func():
print("Module2 func")
# main.py
import module1
import module2
module1.func() # 输出: Module1 func
module2.func() # 输出: Module2 func
重新加载模块
如果模块已经加载,可以使用importlib模块的reload函数重新加载模块。
import importlib
import mymodule
importlib.reload(mymodule)
包的创建与管理
什么是包?
包是包含多个模块的目录。包中必须包含一个__init__.py文件(可以是空的),用于标识该目录为一个包。
创建包
- 创建一个目录(如mypackage)。
- 在目录中创建__init__.py文件(可以是空文件)。
- 在目录中添加模块文件(如module1.py、module2.py)。
mypackage/
__init__.py
module1.py
module2.py
module1.py
def func1():
print("Module1 func1")
module2.py
def func2():
print("Module2 func2")
导入包中的模块
from mypackage import module1, module2
module1.func1() # 输出: Module1 func1
module2.func2() # 输出: Module2 func2