模块与包(import, from, main)
项目:构建一个模块化的“数学与问候工具包”,以导入和重用你自己的函数。
01. 学习目标
在本课结束时,你将能够:
-
- 理解什么是模块和包
-
- 导入内置和自定义的Python模块
-
- 有效使用from-import、别名和main
-
- 组织你的代码以实现可重用性和清晰性
02. 问题场景
随着项目的增长,你会希望将代码组织成更小的、可重用的文件。
与其将所有内容放在一个Python文件中,你将学习使用模块和包来使你的项目可扩展且整洁。
03. 第一步 – 什么是模块?
模块只是一个包含函数、类或变量的Python文件(.py)。
你可以将其导入到另一个文件中以重用其代码。
示例:使用Python内置的math模块
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592...
04. 步骤2 – 不同的导入方式
根据你的使用场景,可以通过多种方式导入模块。
# 导入整个模块
import math
print(math.sqrt(25))
# 导入特定函数
from math import sqrt, pi
print(sqrt(25), pi)
# 使用别名以方便调用
import math as m
print(m.sqrt(36))
05. 第三步 – 创建您自己的模块
您可以创建自己的 Python 文件并将其作为模块重用。
calc.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
main.py
import calc
print(calc.add(3, 5)) # 8
print(calc.sub(10, 7)) # 3
当你导入 calc 时,Python 会自动运行该文件一次,并提供对其函数的访问。
06. 第四步 – 什么是包?
包 是一个包含多个模块的文件夹。
它必须包含一个 __init__.py 文件才能被识别为包。
my_package/
__init__.py
math_ops.py
string_ops.py
from my_package import math_ops
print(math_ops.add(2, 3))
包使得在大型项目中将相关模块分组变得简单。
07. 第五步 – __name__ 和 __main__ 检查
每个 Python 文件可以作为以下两者之一:
- 脚本(直接运行)
- 模块(被导入到另一个文件中)
你可以使用 if __name__ == "__main__": 来区分它们。
# test.py
def hello():
print("Hello!")
if __name__ == "__main__":
hello()
直接执行时:
$ python test.py
你好!
导入时:
import test
# 不会自动打印
这使您能够包含仅在直接执行时运行的测试代码或演示。
08. 第六步 – 安装外部库
您可以使用pip安装第三方库。
pip install requests
然后,在你的项目中使用它:
import requests
res = requests.get("https://api.github.com")
print(res.status_code)
09. 第7步 – 实践示例
示例1:标准模块
import random
print(random.randint(1, 6)) # 掷骰子
示例 2:自定义模块
greet.py
def say_hello(name):
return f"你好,{name}!"
main.py
import greet
print(greet.say_hello("Sabin"))
10. 第8步 – 迷你项目:数学与问候工具包
让我们构建一个简单的包,结合数学和问候模块。
项目结构
toolkit/
__init__.py
math_tools.py
greet_tools.py
main.py
math_tools.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
greet_tools.py
def greet(name):
return f"欢迎, {name}!"
main.py
from toolkit import math_tools, greet_tools
print(math_tools.add(10, 5))
print(greet_tools.greet("Sabin"))
输出:
15
欢迎,Sabin!
11. 反思
您已经学习了如何:
-
- 导入内置和自定义模块
- 将多个文件组织成包
- 使用
__main__将测试代码与导入分开 - 构建您自己的数学与问候工具包以便重用代码

