模块和包是组织代码的重要方式。
模块(Module)
一个模块就是一个包含 Python 定义和语句的文件,其后缀通常为 `.py`。一个模块可以定义函数、类和变量等,并且可以在其他模块中被导入和使用。
创建模块
假设你有一个名为 `mymodule.py` 的文件,其中包含一些函数定义:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
def add(x, y):
return x + y
导入模块
要在另一个Python文件中使用这个模块,你可以使用 `import` 语句:
import mymodule
print(mymodule.greet("Alice"))
print(mymodule.add(5, 3))
其他导入方式
- 别名:
import mymodule as mm
print(mm.greet("Alice"))
- 导入特定成员:
from mymodule import greet, add
print(greet("Alice"))
print(add(5, 3))
- 导入所有成员 (不推荐,因为可能会污染命名空间):
from mymodule import *
print(greet("Alice"))
print(add(5, 3))
包(Package)
包是包含多个模块的一个目录。通过使用包,我们可以将相关的模块组织在一起,并避免命名冲突。一个包也是一个特殊的模块,它必须包含一个 `__init__.py` 文件(即使该文件为空)来告诉 Python 这个目录应该被视为一个包。
创建包
假设你有以下目录结构:
mypackage/
__init__.py
module1.py
module2.py
其中 `module1.py` 和 `module2.py` 是两个模块文件。
使用包中的模块
你可以像这样从包中导入模块:
from mypackage import module1
print(module1.some_function())
或者使用相对导入(在包内部):
# module1.py
from .module2 import some_other_function
print(some_other_function())
示例创建文件夹结构(更一般的则是直接手动设置-window)
mkdir mypackage
touch mypackage/__init__.py
echo "def hello_world(): print('Hello, world!')" > mypackage/module1.py
echo "def add(a, b): return a + b" > mypackage/module2.py
使用包中的模块
# main.py
from mypackage.module1 import hello_world
from mypackage.module2 import add
hello_world()
print(add(10, 5))