当前位置:首页>python>使用openclaw制作python零基础教学-10

使用openclaw制作python零基础教学-10

  • 2026-09-02 19:27:11
使用openclaw制作python零基础教学-10

零基础学Python:Day10!模块和包:复用别人写好的代码

昨天我们学习了函数,学会了把代码封装复用,再也不用复制粘贴啦。老规矩,先公布昨天的作业答案,看看你写对了没~

📋 昨日作业答案

1. 写一个函数,接收一个数字n,返回1到n的和

代码示例:

def sum_n(n):"""计算1到n的累加和"""    total = 0for i in range(1, n+1):        total += ireturn total# 测试print(sum_n(10))  # 输出55,1+2+...+10正好是55print(sum_n(100)) # 输出5050,著名的高斯求和问题

简单的循环累加,结果正确,以后想算多少直接调用就行~

2. 写一个函数,接收三个参数a,b,c,判断能不能组成三角形,返回True/False

三角形规则:任意两边之和大于第三边

代码:

def is_triangle(a, b, c):"""判断三条边能不能组成三角形"""if a + b > c and a + c > b and b + c > a:return Trueelse:return False# 测试print(is_triangle(3, 4, 5))  # True,可以组成直角三角形print(is_triangle(1, 2, 3))  # False,1+2=3不满足大于条件

三个条件都要满足,缺一不可,逻辑没问题。

3. 写一个函数,接收一个列表,返回列表中最大的元素

代码:

def get_max(num_list):"""返回列表中最大的数"""# 先假设第一个元素就是最大的    max_num = num_list[0]# 遍历剩下的元素挨个比较for num in num_list[1:]:if num > max_num:            max_num = numreturn max_num# 测试print(get_max([1, 5, 3, 9, 2])) # 输出9,正确

其实Python内置有max()函数,不过我们自己实现一遍,更能理解逻辑。

4. 写一个函数,接收一个整数n,打印n行的九九乘法表

代码:

def print_multi_table(n):"""打印n行九九乘法表"""for i in range(1, n+1):for j in range(1, i+1):print(f"{j}x{i}={i*j}", end="\t")print() # 换行# 测试:打印9行完整乘法表print_multi_table(9)

运行结果:

1x1=1  1x2=2  2x2=4  1x3=3  2x3=6  3x3=9  1x4=4  2x4=8  3x4=12  4x4=16  1x5=5  2x5=10  3x5=15  4x5=20  5x5=25  1x6=6  2x6=12  3x6=18  4x6=24  5x6=30  6x6=36  1x7=7  2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49  1x8=8  2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64  1x9=9  2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81  

完美,格式对齐,想要几行就打印几行,就是这么灵活~


对完答案,我们开始今天的正题:模块和包!我们昨天学了函数,可以把同一个文件里的代码复用,但如果我们想在多个项目里复用同一段代码,或者想用别人写好的功能怎么办?这就要用到模块和包了,Python最大的优势就是生态丰富,无数大神写好了各种模块包,我们直接拿来用就行,不用什么都自己写,开发速度快得飞起,一起学起来~


🤔 什么是模块?为什么需要模块?

简单来说:一个.py文件就是一个模块,模块里可以写函数、类、变量,我们可以在另一个文件里导入这个模块,就能用里面的所有功能了。

举个例子:我们自己写了一个计算数学的模块math_utils.py,里面写了各种计算函数,那我们在写新项目的时候,直接导入它就能用这些函数了,不用再重新写一遍,非常方便。

总结一下模块的好处:

  1. 代码复用:写一次,多个项目随便用,避免重复造轮子
  2. 方便分工合作:多人开发时候,每个人写不同模块,最后拼起来就行
  3. 功能拆分:把大项目拆成多个模块,每个模块做一件事,逻辑清晰好维护
  4. 使用第三方功能:Python有海量第三方模块,想用什么功能直接安装导入就行,大神帮我们写好了

模块的导入和使用

Python中导入模块非常简单,常用的几种导入方式:

1. 直接导入整个模块

语法:import 模块名 用的时候:模块名.函数名()

举个例子,Python自带了math模块,里面有很多数学函数,我们来用一下:

# 导入整个math模块import math# 用math里面的pi就是圆周率print(math.pi) # 输出3.141592653589793# 计算平方根print(math.sqrt(16)) # 输出4.0

非常简单,导入之后,用模块名.就能访问里面所有的内容。

2. 只导入模块里特定的内容

语法:from 模块名 import 函数名1, 函数名2... 用的时候直接用函数名,不用加模块名前缀:

# 只从math导入pi和sqrtfrom math import pi, sqrtprint(pi) # 直接用,不用写math.pi,输出3.141592653589793print(sqrt(25)) # 直接输出5.0

这种方式适合只用到模块里几个东西,代码更简洁。

3. 导入模块所有内容(不推荐)

语法:from 模块名 import * 这种方式会把模块里所有内容都导入进来,虽然方便,但是容易和你自己写的函数重名冲突,所以不推荐,我们还是用上面两种方式更好。

4. 给模块起别名

如果模块名比较长,我们可以起别名方便写: 语法:import 模块名 as 别名

比如有名的数据分析模块pandas,大家一般都起别名pd:

import pandas as pd# 后面用的时候直接写pd就行,比pandas好写多了

约定俗成的别名我们就跟着用,方便别人读代码。


自定义模块

其实我们自己也可以写模块,非常简单,就是新建一个.py文件,在里面写函数和变量就行。

举个例子,我们新建一个文件my_tools.py,写两个工具函数:

# my_tools.py 我们自己写的模块def add(x, y):"""两数相加"""return x + ydef multiply(x, y):"""两数相乘"""return x * y# 模块里也可以定义变量author = "小龙虾"

这样my_tools.py就是一个我们自己写的模块了,我们在同一个目录下新建另一个文件main.py,导入使用它:

# main.pyimport my_toolsprint(my_tools.add(10, 20)) # 输出30print(my_tools.multiply(10, 20)) # 输出200print(my_tools.author) # 输出小龙虾

完美,我们自己写的模块就可以正常使用了。

if __name__ == '__main__':的作用

我们写自定义模块的时候,经常会看到这句话,它是什么意思呢?

我们知道,一个文件既可以当模块被别的文件导入,也可以自己直接运行。__name__是Python内置的变量:

  • 当我们直接运行这个文件的时候,__name__等于'__main__'
  • 当这个文件被别的文件当作模块导入的时候,__name__等于模块名

所以我们可以把测试代码放在这个判断里面,只有直接运行文件时候才会执行测试代码,导入的时候不会执行:

修改一下我们的my_tools.py:

def add(x, y):return x + ydef multiply(x, y):return x * yauthor = "小龙虾"# 只有直接运行这个文件时候才执行测试if __name__ == '__main__':print("测试add函数:", add(2, 3))print("测试multiply函数:", multiply(2, 3))

这样我们直接运行my_tools.py会看到测试输出,当别的文件导入它的时候,不会输出测试内容,非常干净,这是非常常用的写法。


什么是包?怎么用包?

当我们模块越来越多,我们可以把多个相关模块放在一个文件夹里,这个文件夹就是一个包。包就是一个存放多个模块的文件夹,需要注意的是:Python包文件夹里一般要有一个__init__.py文件(Python3.3之后也可以没有,但是加上更规范),这个文件可以是空的,告诉Python这个文件夹是一个包,不是普通文件夹。

举个例子,我们写一个爬虫项目,结构大概是这样:

spider_project/  # 项目根目录    __init__.py    downloader/  # 下载模块包        __init__.py        html_downloader.py        image_downloader.py    parser/  # 解析模块包        __init__.py        html_parser.py        json_parser.py    main.py

这样把不同功能的模块分类放在不同包里,结构非常清晰,维护起来很方便。

导入包里的模块语法:from 包名.模块名 import 函数名,比如:

from spider.downloader.html_downloader import download_html

非常直观,路径对了就能导入。


📦 Python常用标准库模块介绍

Python自带了很多好用的标准模块,不用安装直接就能用,我们介绍几个最常用的:

1. random模块:生成随机数

import random# 生成0-1之间的随机小数print(random.random()) # 比如输出0.56324...# 生成a到b之间的随机整数,包含a和bprint(random.randint(1, 10)) # 输出1-10之间随机一个整数# 从列表里随机选一个元素fruits = ["苹果", "香蕉", "橘子", "葡萄"]print(random.choice(fruits)) # 随机选一个水果,抽奖超好用

2. datetime模块:处理日期时间

from datetime import datetime, timedelta# 获取当前时间now = datetime.now()print(now) # 输出当前日期时间:2026-03-27 19:00:00# 格式化输出日期print(now.strftime("%Y-%m-%d %H:%M:%S")) # 自定义格式输出# 计算时间差,比如计算7天后的日期seven_days_later = now + timedelta(days=7)print(seven_days_later)

处理日期时间用它就够了,非常方便。

3. os模块:和操作系统交互,处理文件路径

import os# 获取当前工作目录print(os.getcwd()) # 输出当前项目所在文件夹路径# 查看当前文件夹下所有文件print(os.listdir(".")) # 列出当前目录所有文件和文件夹# 判断一个文件是否存在print(os.path.exists("python-tutorial-day10.md")) # 输出True,因为我们刚写了这个文件

操作文件和目录离不开os模块,一定要会用。

4. json模块:处理JSON数据,开发接口必用

import json# 把Python字典转成JSON字符串data = {"name": "小明", "age": 20}json_str = json.dumps(data)print(json_str) # 输出'{"name": "小明", "age": 20}'# 把JSON字符串转成Python字典parse_data = json.loads(json_str)print(parse_data["name"]) # 输出小明

网络开发中JSON是最常用的数据格式,这个模块一定要掌握。


📦 怎么使用第三方模块?

Python生态这么强大,主要就是因为有海量第三方模块,比如做数据分析用pandas,做web用django/flask,做爬虫用requests,这些都不是Python自带的,需要我们安装。

安装第三方模块用pip命令,pip是Python自带的包管理工具,非常方便:

# 安装格式:pip install 模块名pip install requests

安装完之后,和导入标准模块一样导入就能用了:

import requests# 用requests爬网页response = requests.get("https://www.baidu.com")print(response.status_code) # 输出200说明成功访问了百度

就是这么简单,全球Python开发者写了上百万个第三方模块,几乎你能想到的功能都有人写好了,直接安装用就行。


🎯 实战小案例

我们来做一个实用小案例:用random模块实现一个随机抽奖小程序。

需求:输入参与抽奖的名单,随机抽出中奖名额。

代码:

import randomdef lucky_draw(names, num):"""    随机抽奖    names: 所有参与人员名单列表    num: 中奖名额    返回中奖名单    """# 随机抽取num个不重复的人    winners = random.sample(names, num)return winners# 测试一下participants = ["张三", "李四", "王五", "赵六", "钱七", "孙八"]win = lucky_draw(participants, 2)print("恭喜中奖:")for name in win:print(f"🎉 {name}")

运行结果(每次不一样哦):

恭喜中奖:🎉 赵六🎉 张三

是不是很实用?公司年会抽奖拿这个就能用,几行代码就搞定了,这就是模块的威力,我们直接用别人写好的random模块就行,不用自己写随机算法。

再来一个案例:获取当前日期,格式化输出,用datetime模块:

from datetime import datetimedef get_today():"""获取今天日期,格式化为YYYY年MM月DD日"""    now = datetime.now()return now.strftime("%Y年%m月%d日")print(f"今天是:{get_today()}")

运行输出:今天是:2026年03月27日,完美,格式清晰,想要什么格式自己改就行。


📝 今日小结

今天我们学习了Python中模块和包,学会了怎么复用代码,不管是自己的还是别人的,总结一下核心知识点:

  1. 模块:一个.py文件就是一个模块,可以封装函数、变量,供其他文件导入使用
  2. 导入方式:import 模块名,from 模块名 import 函数,import 模块名 as 别名三种常用方式
  3. 自定义模块:自己写的.py文件就能当模块导入,if __name__ == '__main__':用来放测试代码,导入不执行
  4. 包:存放多个相关模块的文件夹,一般要有__init__.py文件
  5. 标准库:Python自带很多实用模块,比如random、datetime、os、json,不用安装直接用
  6. 第三方模块:用pip install 模块名安装,安装完就能导入使用,Python海量第三方模块满足各种需求

模块和包是Python生态的基础,学会了你就能站在巨人肩膀上开发,不用什么都自己写,开发速度快很多。


🏋️ 今日作业

动手练习一下,巩固今天学的知识点:

1. 自己写一个模块utils.py,里面写一个函数判断闰年,然后在另一个文件main.py导入使用它

2. 使用random模块,写一个猜数字游戏:程序随机生成一个1-100的数字,用户输入猜测,程序提示猜大了还是猜小了,直到猜对统计猜了几次

3. 使用datetime模块,计算你今年的生日距离今天还有多少天

4. 安装第三方模块requests,用它访问百度首页,打印出首页的html内容(前500字符就行)


好啦,今天我们学会了模块和包,能够复用别人写好的代码了,明天我们学习Python中面向对象编程,这是Python非常核心的编程思想,大型项目都会用到,敬请期待~

最新文章

随机文章