16.模块导入与使用

16.模块导入与使用

欢迎来到《10天学会Python》第8天!今天我们将学习Python中非常重要的概念——模块。模块可以理解为“代码工具箱”,它包含了预先编写好的函数、类、变量等,让你可以直接使用而无需重复编写相同功能。

核心概念

模块是封装好的Python代码文件,通常以 .py为后缀。使用模块有三个主要好处:

  1. 代码重用:避免重复编写相同功能,节省开发时间,提高效率
  2. 组织清晰:将大型项目拆分成多个模块,每个模块负责特定功能,结构更清晰
  3. 功能扩展:利用Python丰富的标准库和第三方库,快速实现复杂功能

Python自带丰富的标准库模块,涵盖数学计算、时间处理、文件操作、网络请求等各个方面。你可以直接导入使用,无需额外安装。

生活化比喻

想象模块就像装修房子的工具间

  • 标准库模块 = Python自带的基础工具箱(锤子、螺丝刀等基本工具)
  • 第三方模块 = 需要单独安装的专业工具包(电钻、砂轮机等高级工具)
  • 自定义模块 = 自己DIY的小工具,适合特定需求
  • 导入模块 = 从工具间拿出需要的工具使用

模块导入的三种方式

Python提供了三种主要的模块导入方式,各有适用场景:

1. 基本导入:import

导入整个模块,使用时需要加模块名前缀。适合需要用到模块中多个功能的情况。

python

import toolbox  # 导入整个工具箱
toolbox.hammer()  # 使用时要写toolbox.hammer()

2. 选择导入:from...import

只导入需要的功能,可以直接使用。适合明确知道要用哪个功能。

python

from toolbox import hammer  # 只导入锤子
hammer()  # 直接使用,不需要前缀

3. 别名导入:import...as

给模块起一个简称,方便书写。适合模块名较长的情况。

python

import toolbox as tb  # 给工具箱起简称tb
tb.hammer()  # 用简称调用

代码示例(5个生活场景)

下面通过5个贴近生活的示例,展示不同模块的使用方法:

示例1:使用math模块计算圆的面积

math模块提供数学计算功能,如圆周率π、平方根、取整等。

python

import math  # 导入数学模块

# 计算圆的面积(公式:πr²)
radius = 5
area = math.pi * math.pow(radius, 2)
print(f"半径为{radius}的圆,面积是:{area:.2f}")

# 计算平方根
number = 16
sqrt_result = math.sqrt(number)
print(f"{number}的平方根是:{sqrt_result}")

# 向上取整
price = 19.99
ceil_price = math.ceil(price)
print(f"{price}元向上取整:{ceil_price}元")

示例2:使用random模块抽奖

random模块用于生成随机数,适合抽奖、验证码等场景。

python

from random import randint, choice  # 导入需要的函数

# 生成1-100的随机数
lucky_number = randint(1, 100)
print(f"你的幸运数字是:{lucky_number}")

# 从列表中随机选择幸运者
participants = ["小明", "小红", "小刚", "小丽", "小华"]
winner = choice(participants)
print(f"本次抽奖的幸运儿是:{winner}!")

# 生成6位数字验证码
verification_code = ""
for _ in range(6):
    verification_code += str(randint(0, 9))
print(f"验证码:{verification_code}")

示例3:使用datetime模块记录时间

datetime模块处理日期和时间,适合计时、日程等场景。

python

import datetime as dt  # 使用别名dt

# 获取当前时间
now = dt.datetime.now()
print(f"当前时间:{now}")

# 获取当前日期
today = dt.date.today()
print(f"今天是:{today}")

# 计算时间差:从2024年元旦到现在
start_time = dt.datetime(2024, 1, 1, 0, 0, 0)
end_time = dt.datetime.now()
time_difference = end_time - start_time
print(f"从2024年元旦到现在,已经过去了:{time_difference.days}天")

# 格式化输出
formatted_time = now.strftime("%Y年%m月%d日 %H:%M:%S")
print(f"格式化时间:{formatted_time}")

示例4:组合多个模块制作天气预报

实际开发中常需要组合多个模块。本例演示如何用math、random、datetime创建实用程序。

python

import math  # 数学计算
from random import choice  # 随机选择
import datetime as dt  # 时间处理

def daily_weather():
    """生成模拟的每日天气"""
    cities = ["北京", "上海", "广州", "深圳", "成都"]
    weather_types = ["晴", "多云", "小雨", "阴", "阵雨"]
    city = choice(cities)  # 随机选择城市
    weather = choice(weather_types)  # 随机选择天气
  
    # 根据天气类型生成温度
    if weather == "晴":
        temperature = round(math.uniform(20, 30), 1)
    elif weather == "多云":
        temperature = round(math.uniform(18, 25), 1)
    elif weather == "小雨":
        temperature = round(math.uniform(15, 22), 1)
    else:
        temperature = round(math.uniform(10, 20), 1)
  
    return city, weather, temperature

# 获取今天日期并格式化
today = dt.date.today()
formatted_date = today.strftime("%Y年%m月%d日")

# 生成天气并输出
city, weather, temperature = daily_weather()
print(f"{formatted_date} {city}天气预报:{weather},气温{temperature}℃")

示例5:自定义模块概念

除了使用内置模块,你可以创建自己的模块。这有助于组织大型项目。

python

# 创建my_tools.py文件,内容:
# def calculate_bmi(weight, height):
#     \"\"\"计算身体质量指数\"\"\"
#     return weight / (height ** 2)
#
# def is_healthy_bmi(bmi):
#     \"\"\"判断BMI是否在健康范围\"\"\"
#     return 18.5 <= bmi <= 24

# 在另一个文件中导入:
# import my_tools
# bmi = my_tools.calculate_bmi(65, 1.75)
# print(f"你的BMI是:{bmi:.1f}")

练习题

第1组(基础):生成随机密码

**目标 **:熟练使用random模块的choice函数生成随机字符串。

python

import random

def generate_password(length=8):
    characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    password = ""
    for _ in range(length):
        password += random.choice(characters)
    return password

print(f"生成的密码:{generate_password()}")

**进阶挑战 **:修改函数,让密码包含小写字母和特殊符号(如!@#$%)。

第2组(应用):计算年龄

**目标 **:掌握datetime模块的日期计算和时间差操作。

python

import datetime

def calculate_age(birth_year, birth_month, birth_day):
    birth_date = datetime.date(birth_year, birth_month, birth_day)
    today = datetime.date.today()
  
    # 计算年龄(年)
    age_years = today.year - birth_date.year
  
    # 检查生日是否已经过完今年
    if (today.month, today.day) < (birth_date.month, birth_date.day):
        age_years -= 1
  
    # 计算总天数
    days_lived = (today - birth_date).days
  
    return age_years, days_lived

# 测试(输入你的生日)
years, days = calculate_age(2000, 1, 1)
print(f"你今年{years}岁,已经生活了{days}天")

**进阶挑战 **:计算距离下一次生日还有多少天。

第3组(综合):学习时间管理程序

**目标 **:综合运用多个模块,设计一个实用程序。

python

import datetime
import random
import math

class StudyTimer:
    def __init__(self):
        self.start_time = None
  
    def start_study(self):
        self.start_time = datetime.datetime.now()
        print(f"学习开始时间:{self.start_time.strftime('%H:%M:%S')}")
  
    def end_study(self):
        end_time = datetime.datetime.now()
        duration = (end_time - self.start_time).seconds / 60
        print(f"学习结束!本次学习时长:{math.ceil(duration)}分钟")
    
        # 根据时长生成评价
        if duration < 30:
            print("今天学习时间有点短,要加油哦!")
        elif duration < 60:
            print("不错的学习时长,继续保持!")
        else:
            print("太棒了!今天学习了很长时间!")
  
    def suggest_break(self):
        activities = ["起来走动5分钟", "喝一杯水", "看看窗外放松眼睛", "做几个深呼吸", "听一首喜欢的歌"]
        return random.choice(activities)

# 测试
timer = StudyTimer()
timer.start_study()
print(f"休息建议:{timer.suggest_break()}")
# 假设经过一段时间后...
timer.end_study()

**进阶挑战 **:添加记录每天学习时间的功能,并计算本周总学习时间。

总结

今天学习了模块的核心概念和使用方法:

**核心概念 **:

  1. 模块是封装好的代码工具箱,支持代码重用和项目组织
  2. 标准库模块是Python自带的丰富工具集
  3. 导入方式包括import、from...import、as别名

**常用模块 **:

  1. math:数学计算(圆周率、平方根、取整)
  2. random:随机数生成(抽奖、验证码)
  3. datetime:时间处理(日期计算、格式化)

**最佳实践 **:

  1. 根据需求选择合适的导入方式
  2. 使用别名简化长模块名
  3. 组合多个模块创建实用程序

掌握模块使用是编程进阶的重要一步,明天我们将学习文件操作,让程序能够读写数据!


学习建议

  1. 尝试导入其他标准库模块,如os、json、csv等
  2. 创建自己的模块,练习模块化编程思维
  3. 查阅Python官方文档,了解模块的完整功能列表
  4. 在实际小项目中应用模块,如天气查询、日记本等
15.变量的作用域 2026-01-21
17.读写文本文件 2026-01-21

评论区