Python基础 :模块与包

模块与包(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 文件可以作为以下两者之一:

  1. 脚本(直接运行)
  2. 模块(被导入到另一个文件中)

你可以使用 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__将测试代码与导入分开
    • 构建您自己的数学与问候工具包以便重用代码

更多