最近更新:Python零基础教程第十课 认识新朋友 模块和包
2025-12-26
最近更新:Python零基础教程第九课:犯错了怎么办?——错误处理
2025-12-26
2025-12-26
2025-12-26
最近更新:Python零基础教程第七课:我的第一个工具箱——函数
2025-12-26
浏览量:17 次 发布时间:2025-12-26 21:16 作者:明扬工控商城 下载docx
最近更新:Python零基础教程第十课 认识新朋友 模块和包
2025-12-26
最近更新:Python零基础教程第九课:犯错了怎么办?——错误处理
2025-12-26
2025-12-26
2025-12-26
最近更新:Python零基础教程第七课:我的第一个工具箱——函数
2025-12-26
欢迎来到第十课。前面我们学会了编写自己的程序,但编程的世界很大,有很多功能别人已经帮我们写好了。今天我们要学习如何使用这些现成的工具,它们叫做模块和包。就像你要做饭,不需要自己种菜、榨油、磨面粉,直接去超市买现成的材料就可以了。
想象一下,你有一个工具箱:
锤子模块:专门敲钉子
螺丝刀模块:专门拧螺丝
尺子模块:专门测量长度
每个模块都有专门的功能。把这些模块放在一个工具箱里,这个工具箱就是包。
在Python中:
模块:一个.py文件,包含了一些函数和变量
包:一个文件夹,里面包含多个模块
Python自带了很多模块,我们叫它们标准库。让我们看看怎么使用。
代码部分:
使用math模块
import math
print("数学计算示例")
print("圆周率π =", math.pi)
print("自然常数e =", math.e)
计算
print("\n计算示例:")
print("4的平方根 =", math.sqrt(4))
print("2的3次方 =", math.pow(2, 3))
print("sin(30度) =", math.sin(math.radians(30))) 注意要先转换成弧度
print("log(100) =", math.log(100, 10)) 以10为底100的对数
向上取整和向下取整
print("\n取整示例:")
print("3.14向上取整 =", math.ceil(3.14))
print("3.14向下取整 =", math.floor(3.14))
print("3.14四舍五入 =", round(3.14))
代码部分:
使用random模块
import random
print("随机数示例")
print("\n生成0到1之间的随机小数:")
for i in range(3):
print(f"第{i+1}次:", random.random())
print("\n生成指定范围的随机整数:")
print("1到10的随机数:", random.randint(1, 10))
print("1到100的随机数:", random.randint(1, 100))
print("\n从列表中随机选择:")
水果列表 = ["苹果", "香蕉", "橙子", "葡萄", "西瓜"]
print("随机水果:", random.choice(水果列表))
print("随机选择2个水果:", random.sample(水果列表, 2))
打乱列表顺序
print("\n打乱列表顺序:")
牌组 = ["红桃A", "红桃2", "红桃3", "红桃4", "红桃5"]
print("原始牌组:", 牌组)
random.shuffle(牌组)
print("洗牌后:", 牌组)
代码部分:
使用datetime模块
import datetime
print("日期时间示例")
获取当前时间
现在 = datetime.datetime.now()
print("当前完整时间:", 现在)
print("当前日期:", 现在.date())
print("当前时间:", 现在.time())
print("年份:", 现在.year)
print("月份:", 现在.month)
print("日期:", 现在.day)
print("小时:", 现在.hour)
print("分钟:", 现在.minute)
print("秒:", 现在.second)
格式化时间
print("\n格式化时间:")
格式1 = 现在.strftime("%Y年%m月%d日 %H时%M分%S秒")
格式2 = 现在.strftime("%Y-%m-%d %H:%M:%S")
格式3 = 现在.strftime("%A, %B %d, %Y") 英文格式
print("中文格式:", 格式1)
print("标准格式:", 格式2)
print("英文格式:", 格式3)
时间计算
print("\n时间计算:")
今天 = datetime.date.today()
print("今天是:", 今天)
一天 = datetime.timedelta(days=1)
一周 = datetime.timedelta(weeks=1)
明天 = 今天 + 一天
昨天 = 今天 - 一天
下周 = 今天 + 一周
print("明天:", 明天)
print("昨天:", 昨天)
print("下周今天:", 下周)
导入模块有几种方法,适用于不同场景。
代码部分:
方法1:import 模块名
import math
import random
import datetime
这样使用
结果 = math.sqrt(16)
print("16的平方根:", 结果)
随机数 = random.randint(1, 100)
print("1-100随机数:", 随机数)
现在 = datetime.datetime.now()
print("当前时间:", 现在)
代码部分:
方法2:import 模块名 as 别名
import math as m
import datetime as dt
这样使用
结果 = m.sqrt(25)
print("25的平方根:", 结果)
现在 = dt.datetime.now()
print("当前时间:", 现在)
当模块名很长时,用别名很方便
import numpy as np
import pandas as pd
这是数据科学生态中常用的别名
代码部分:
方法3:from 模块名 import 功能名
from math import sqrt, pi
from random import randint, choice
这样使用,不需要写模块名
print("圆周率:", pi)
结果 = sqrt(36)
print("36的平方根:", 结果)
随机数 = randint(1, 50)
print("1-50随机数:", 随机数)
代码部分:
方法4:from 模块名 import *
from math import *
这样使用,所有功能都可以直接使用
print("π =", pi)
print("e =", e)
print("sin(π/2) =", sin(pi/2))
print("2的3次方 =", pow(2, 3))
注意:这种方法可能会引起命名冲突,一般不推荐
我们也可以创建自己的模块,供其他程序使用。
第一步:创建第一个模块
新建一个文件,保存为"我的工具.py"
代码部分:
文件:我的工具.py
我的第一个模块
版本信息
version = "1.0.0"
作者 = "Python学习者"
函数定义
def 问好(名字):
简单的问候函数
return f"你好,{名字}!欢迎使用我的工具。"
def 计算圆面积(半径):
计算圆面积
import math
return math.pi * 半径 * 半径
def 计算圆周长(半径):
计算圆周长
import math
return 2 * math.pi * 半径
def 判断素数(数字):
判断一个数是否是素数
if 数字 < 2:
return False
for i in range(2, int(数字**0.5) + 1):
if 数字 % i == 0:
return False
return True
def 生成斐波那契数列(长度):
生成斐波那契数列
if 长度 <= 0:
return []
elif 长度 == 1:
return [0]
elif 长度 == 2:
return [0, 1]
数列 = [0, 1]
for i in range(2, 长度):
下一个数 = 数列[i-1] + 数列[i-2]
数列.append(下一个数)
return 数列
测试代码
if name == "main":
print("测试我的工具模块:")
print(问好("小明"))
print("半径为5的圆面积:", 计算圆面积(5))
print("半径为5的圆周长:", 计算圆周长(5))
print("17是素数吗?", 判断素数(17))
print("前10个斐波那契数:", 生成斐波那契数列(10))
第二步:使用自己的模块
新建另一个文件,保存为"使用我的工具.py"
代码部分:
文件:使用我的工具.py
使用我们自己创建的模块
导入模块
import 我的工具
使用模块中的函数
print(我的工具.问好("小红"))
print("半径为3的圆面积:", 我的工具.计算圆面积(3))
print("半径为3的圆周长:", 我的工具.计算圆周长(3))
print("检查素数:")
for 数字 in [2, 3, 4, 17, 20, 29]:
结果 = 我的工具.判断素数(数字)
print(f"{数字}是素数吗?{结果}")
print("斐波那契数列:")
print("前5个:", 我的工具.生成斐波那契数列(5))
print("前8个:", 我的工具.生成斐波那契数列(8))
访问模块信息
print("\n模块信息:")
print("版本:", 我的工具.version)
print("作者:", 我的工具.作者)
在模块中,我们经常看到这行代码,它有什么作用呢?
代码部分:
理解 if name == "main"
创建测试文件 test.py
def 测试函数():
print("这是一个测试函数")
print("name 的值是:", name)
if name == "main":
print("这个文件被直接运行")
测试函数()
else:
print("这个文件被导入为模块")
运行这个文件,会看到:
name 的值是:main
这个文件被直接运行
这是一个测试函数
在另一个文件中导入它:
import test
会看到:
name 的值是:test
这个文件被导入为模块
作用:
当文件被直接运行时,name 等于 "main"
当文件被导入时,name 等于 模块名
这样可以让代码既可作为模块使用,也可直接运行测试
当模块很多时,我们可以把它们组织成包。
创建包的步骤:
创建一个文件夹(包名)
在文件夹中创建 init.py 文件(可以是空的)
在文件夹中创建多个模块文件
示例:创建数学工具包
第一步:创建文件夹结构
数学工具包/
init.py
基本运算.py
几何计算.py
统计分析.py
第二步:创建 init.py
代码部分:
文件:数学工具包/init.py
数学工具包的初始化文件
版本信息
version = "1.0.0"
author = "Python学习者"
简化导入
from .基本运算 import *
from .几何计算 import *
from .统计分析 import *
print(f"数学工具包 {version} 已加载")
第三步:创建基本运算模块
代码部分:
文件:数学工具包/基本运算.py
基本数学运算
def 加法(a, b):
return a + b
def 减法(a, b):
return a - b
def 乘法(a, b):
return a * b
def 除法(a, b):
if b == 0:
return "错误:除数不能为零"
return a / b
def 阶乘(n):
if n == 0:
return 1
result = 1
for i in range(1, n + 1):
result *= i
return result
第四步:创建几何计算模块
代码部分:
文件:数学工具包/几何计算.py
几何计算
import math
def 圆面积(半径):
return math.pi * 半径 * 半径
def 圆周长(半径):
return 2 * math.pi * 半径
def 矩形面积(长, 宽):
return 长 * 宽
def 矩形周长(长, 宽):
return 2 * (长 + 宽)
def 三角形面积(底, 高):
return 0.5 * 底 * 高
def 球体积(半径):
return (4/3) * math.pi * (半径 ** 3)
第五步:创建统计分析模块
代码部分:
文件:数学工具包/统计分析.py
统计分析工具
def 平均值(数字列表):
if not 数字列表:
return 0
return sum(数字列表) / len(数字列表)
def 中位数(数字列表):
if not 数字列表:
return 0
排序列表 = sorted(数字列表)
n = len(排序列表)
if n % 2 == 1: 奇数个
return 排序列表[n // 2]
else: 偶数个
mid = n // 2
return (排序列表[mid-1] + 排序列表[mid]) / 2
def 众数(数字列表):
if not 数字列表:
return None
频率 = {}
for 数字 in 数字列表:
if 数字 in 频率:
频率[数字] += 1
else:
频率[数字] = 1
最大频率 = max(频率.values())
众数列表 = [数字 for 数字, 频次 in 频率.items() if 频次 == 最大频率]
return 众数列表
def 标准差(数字列表):
if len(数字列表) < 2:
return 0
平均值 = sum(数字列表) / len(数字列表) 方差 = sum((x - 平均值) ** 2 for x in 数字列表) / (len(数字列表) - 1) return 方差 ** 0.5
第六步:使用包
代码部分:
文件:使用数学工具包.py
使用我们自己创建的包
导入整个包
import 数学工具包
使用包中的功能
print("基本运算:")
print("5 + 3 =", 数学工具包.加法(5, 3))
print("5的阶乘 =", 数学工具包.阶乘(5))
print("\n几何计算:")
print("半径3的圆面积:", 数学工具包.圆面积(3))
print("长4宽3的矩形面积:", 数学工具包.矩形面积(4, 3))
print("\n统计分析:")
数据 = [1, 2, 2, 3, 4, 4, 4, 5]
print("数据:", 数据)
print("平均值:", 数学工具包.平均值(数据))
print("中位数:", 数学工具包.中位数(数据))
print("众数:", 数学工具包.众数(数据))
print("标准差:", 数学工具包.标准差(数据))
Python最强大的地方是有海量的第三方包。让我们学习如何安装和使用它们。
pip是Python的包管理工具,可以安装、升级、卸载包。
在命令行中运行:
pip install 包名
常用命令:
pip install requests 安装requests包 pip install numpy 安装numpy包 pip install pandas 安装pandas包 pip list 查看已安装的包 pip show 包名 查看包信息 pip uninstall 包名 卸载包
代码部分:
安装requests包后使用
import requests
print("使用requests访问网页")
尝试访问一个网站
try:
响应 = requests.get("https://www.baidu.com")
print("状态码:", 响应.status_code)
print("编码:", 响应.encoding)
print("前100个字符:", 响应.text[:100])
if 响应.status_code == 200:
print("访问成功!")
else:
print("访问失败")
except Exception as e:
print("出错:", e)
让我们用第三方包做一个实用的天气查询程序。
第一步:安装必要的包
在命令行运行:pip install requests
第二步:创建天气查询程序
代码部分:
天气查询程序
import requests
import json
def 获取天气(城市):
获取城市天气信息
try:
使用天气API
这里使用一个免费的天气API
API地址 = f"http://wthrcdn.etouch.cn/weather_mini?city={城市}"
发送请求
响应 = requests.get(API地址, timeout=5)
检查响应
if 响应.status_code == 200:
解析JSON数据
数据 = 响应.json()
if 数据.get("status") == 1000: 请求成功
return 解析天气数据(数据["data"])
else:
return "城市不存在或无法获取天气信息"
else:
return "网络请求失败,请检查网络连接"
except requests.exceptions.Timeout:
return "请求超时,请稍后重试"
except requests.exceptions.ConnectionError:
return "网络连接错误"
except Exception as e:
return f"获取天气失败:{str(e)}"
def 解析天气数据(天气数据):
解析天气数据,返回格式化的字符串
基本信息
城市 = 天气数据.get("city", "未知城市")
当前温度 = 天气数据.get("wendu", "未知")
构建结果字符串
结果 = f"城市:{城市}\n"
结果 += f"当前温度:{当前温度}℃\n"
天气预报
预报列表 = 天气数据.get("forecast", [])
if 预报列表:
结果 += "\n天气预报:\n"
for 预报 in 预报列表[:3]: 只显示最近3天
日期 = 预报.get("date", "未知日期")
天气 = 预报.get("type", "未知天气")
高温 = 预报.get("high", "未知").replace("高温 ", "")
低温 = 预报.get("low", "未知").replace("低温 ", "")
风向 = 预报.get("fengxiang", "未知风向")
结果 += f"{日期}:{天气},{低温}~{高温},{风向}\n"
其他建议
建议 = 天气数据.get("ganmao", "")
if 建议:
结果 += f"\n温馨提示:{建议}"
return 结果
def 主程序():
print("=" * 50)
print(" 天气查询程序")
print("=" * 50)
print("支持查询全国大部分城市天气")
print("输入'退出'结束程序")
print("=" * 50)
while True:
城市 = input("\n请输入城市名称:").strip()
if not 城市:
print("请输入城市名称!")
continue
if 城市 == "退出":
print("感谢使用天气查询程序,再见!")
break
print(f"\n正在查询 {城市} 的天气...")
天气信息 = 获取天气(城市)
print("\n" + "=" * 50)
print(天气信息)
print("=" * 50)
if name == "main":
try:
主程序()
except KeyboardInterrupt:
print("\n\n程序被中断,退出。")
except Exception as e:
print(f"程序出错:{e}")
Python有很多强大的第三方包,这里介绍几个常用的:
requests:网络请求,获取网页内容
numpy:数值计算,处理数组和矩阵
pandas:数据分析,处理表格数据
matplotlib:数据可视化,绘制图表
beautifulsoup4:网页解析,提取网页信息
openpyxl:操作Excel文件
pygame:游戏开发
flask:Web开发框架
今天的内容非常实用,我们学会了:
使用内置模块:math、random、datetime
导入模块的不同方式
创建自己的模块和包
理解 if name == "main" 的作用
安装和使用第三方包
实际应用:制作天气查询程序
任务1:制作生日计算器
编写一个程序,计算:
距离下一个生日还有多少天
出生到现在已经多少天
下一个生日是星期几
任务2:随机密码生成器
编写一个密码生成器:
可以指定密码长度
可以选择包含数字、字母、特殊符号
生成多个密码供选择
任务3:简易计算器包
创建一个计算器包,包含:
基本运算模块(加减乘除)
科学计算模块(三角函数、对数等)
单位换算模块(长度、重量、温度等)
任务4:网页内容抓取器
使用requests和beautifulsoup4:
抓取网页标题
提取所有链接
提取特定内容(如新闻标题)
下节课是我们的最后一课,我们将做一个综合项目:智能聊天机器人。这个项目会用到我们学过的所有知识:
变量和数据类型
条件判断和循环
函数和模块
文件操作
错误处理
通过这个项目,你会看到如何把学过的知识组合起来,做出一个真正有用的程序。
模块和包是Python编程的重要组成部分,建议你:
多练习使用内置模块
尝试将你的代码组织成模块
学会查找和使用第三方包
阅读优秀开源项目的代码
了解虚拟环境的使用(后续学习)
记住,编程不是从零开始造轮子,而是站在巨人的肩膀上。学会使用现有的模块和包,能大大提高你的编程效率。
你已经学会了如何使用Python的强大生态系统,这是成为专业程序员的重要一步。继续加油,我们下节课再见!
将本文的Word文档下载到电脑
推荐度: