云计算百科
云计算领域专业知识百科平台

AI大模型学习分享

Python 零基础 Day07 笔记|Lambda 匿名函数、文件 IO 操作、异常捕获与 Debug 调试

一、文章前言

本篇整合 Python 第 7 天核心知识点,包含四大核心模块:lambda 匿名函数、文件读写操作、with 自动关闭文件、try-except 异常捕获、PyCharm 断点调试,附带大量可运行实战案例,适合零基础入门、面试复习、课堂笔记复盘,代码均可直接复制运行。

二、Lambda 匿名函数(重点)

2.1 适用场景

普通函数适合复用多次;lambda 匿名函数仅适用于函数只有一行代码、有返回值的场景,常作为参数传给排序、高阶函数使用,简化代码。

2.2 基础语法

# 语法
变量名 = lambda 参数列表: 返回表达式
# 调用
变量名()

2.3 基础案例

1)无参 lambda

# 普通函数
def fun1():
return 100
print(fun1())

# lambda简写
lambda_fun1 = lambda: 100
print(lambda_fun1())

2)带参数 lambda

# 普通函数求和
def fun2(a, b):
return a + b
print(fun2(3,5))

# lambda求和
lambda_fun2 = lambda a,b: a + b
print(lambda_fun2(4,6))

# 字符串转大写
lambda_fun3 = lambda s: s.upper()
print(lambda_fun3("hello python"))

3)带默认参数 lambda

lambda_fun4 = lambda a, b=100: a + b
print(lambda_fun4(4))

4)结合三目运算符判断

Python 三目语法:满足条件返回值 if 条件 else 不满足返回值

# 普通函数
def fn8(name):
return True if name == "张三" else False
print(fn8("张三"))

# lambda简写
fn9 = lambda name: True if name == "张三" else False
print(fn9("李四"))

2.4 实战:列表字典排序(高频考点)

使用sort(key=lambda)自定义排序规则

student_list = [
{"name": "张三", "age": 20, "address": '南京'},
{"name": "李四", "age": 25, "address": '北京'},
{"name": "王五", "age": 23, "address": '上海'},
{"name": "赵六", "age": 19, "address": '广州'},
{"name": "田七", "age": 22, "address": '深圳'}
]
# 根据age降序排序
student_list.sort(key=lambda x: x["age"], reverse=True)
print(student_list)

三、文件 IO 操作(文件读写)

3.1 文件基础概念

内存数据断电丢失,文件持久化存储在磁盘;文件分为文本文件、二进制文件(图片 / 视频 / 音频)。 文件操作三步:打开文件 → 读写操作 → 关闭文件

3.2 open () 基础语法

# 语法
文件对象 = open(文件路径, 打开模式, encoding="utf-8")
# 操作
文件对象.读写方法()
# 关闭
文件对象.close()

  • encoding="utf-8":必须加,解决中文乱码
  • 文件路径:相对路径、绝对路径
路径规则
路径写法含义
./a.txt / a.txt 当前代码同级文件
../a.txt 上一级目录文件
文件夹/a.txt 当前目录下级文件夹内文件

3.3 三大核心打开模式 r /w/a

模式作用特点
r read 只读 文件不存在直接报错;光标在开头,仅可读
w write 只写 文件不存在自动创建;清空原有内容再写入
a append 追加 文件不存在自动创建;光标在末尾,原有内容保留

拓展带+/b:

  • r+/w+/a+:可读可写,区别仅在文件光标位置
  • rb/wb/ab:二进制模式,读写图片、视频等非文本文件

3.4 文件写入案例 w 模式

# 写入文本,utf-8防止中文乱码
f = open("./data/a.txt", "w", encoding="utf-8")
f.write("人生苦短,我要学Python")
f.close()

3.5 文件读取三大方法

1)read() / read(size)

一次性读取全部内容,size 指定读取字符长度,适合小文件

f = open("./data/a.txt", "r", encoding="utf-8")
# 读取全部
content = f.read()
print(content)

# 分段循环读取,避免大文件内存溢出
while True:
data = f.read(10)
if not data:
break
print(data, end="")
f.close()

2)readlines()

一次性读取所有行,返回列表,每行作为列表元素

f = open("./data/124.txt", "r", encoding="utf-8")
line_list = f.readlines()
for line in line_list:
print(line, end="")
f.close()

3)readline()

单次读取一行,循环读取适合超大文件

f = open("./data/124.txt", "r", encoding="utf-8")
while True:
line = f.readline()
if not line:
break
print(line, end="")
f.close()

四、with open 自动管理文件(推荐写法)

4.1 优势

无需手动调用close(),代码执行完毕自动关闭文件、释放资源,避免忘记关闭导致文件占用。

4.2 语法

with open(路径, 模式, encoding="utf-8") as 文件别名:
读写操作代码

4.3 实战案例

案例 1:文件内容按行反转写入新文件

# a.txt每行反转存入b.txt
with open("./data/1.txt", "r", encoding="utf-8") as read_f, open("./data/2.txt", "w", encoding="utf-8") as write_f:
while True:
line = read_f.readline()
if not line:
break
line = line.replace("\\n", "")
reverse_line = line[::-1]
write_f.write(reverse_line + "\\n")

案例 2:文件拷贝(文本文件)

# 复制a.txt 备份为 a[备份].txt
with open("./data/a.txt", "r", encoding="utf-8") as r_f, open("./data/a[备份].txt", "w", encoding="utf-8") as w_f:
content = r_f.read()
w_f.write(content)

案例 3:二进制文件拷贝(视频 / 图片)

# rb/wb 二进制模式,无需encoding
with open("test.avi", "rb") as src, open("副本.avi", "wb") as dest:
while True:
data = src.read(1024*1024) # 一次读取1MB
if not data:
break
dest.write(data)

五、异常处理 try-except-finally

5.1 什么是异常

代码运行出错时程序终止并抛出报错信息,即为异常;异常捕获可以保证程序不崩溃,提升健壮性。

5.2 完整异常语法结构

try:
# 可能报错的代码块
except 指定异常 as e:
# 捕获对应异常执行逻辑
except Exception as e:
# 兜底捕获所有异常,打印错误信息
else:
# 无异常时执行
finally:
# 无论是否报错,一定会执行(常用于关闭文件、释放资源)

5.3 基础捕获案例

# 捕获未定义变量异常
try:
print(name)
except Exception as e:
print("错误信息:", e)

5.4 else 无异常分支

try:
f = open("python.txt", "r", encoding="utf-8")
except Exception as e:
print("文件打开失败:", e)
else:
# 文件正常打开才执行
print(f.readlines())
f.close()

5.5 finally 必执行分支

try:
f = open("python.txt", "r", encoding="utf-8")
except:
f = open("python.txt", "w", encoding="utf-8")
else:
print(f.read())
finally:
# 无论是否报错,一定关闭文件
f.close()

5.6 实战:带异常处理的猜数字游戏

捕获用户非数字输入,防止程序崩溃

import random
num = random.randint(1, 100)
flag = False
for i in range(3):
try:
input_num = int(input("请输入1-100数字:"))
if not (1 <= input_num <= 100):
print("数字超出范围!")
continue
if input_num > num:
print("猜大了")
elif input_num < num:
print("猜小了")
else:
print("恭喜猜对!")
flag = True
break
except:
print("输入不是有效数字,请重新输入!")
if not flag:
print("3次机会用完,游戏结束")

六、PyCharm Debug 断点调试

调试是排查代码 bug 核心技能,操作步骤:

  • 设置断点:点击代码行号右侧,出现红色圆点即断点生效,再次点击取消
  • 启动调试:右键Debug 文件名进入调试模式
  • 常用快捷键(Windows)

    快捷键功能
    F8 Step Over 执行当前行,跳过函数内部
    F7 Step Into 进入当前行调用的函数内部
    Shift+F8 Step Out 跳出当前函数,回到调用位置
    F9 Resume Program 运行到下一个断点
    Alt+F9 Run to Cursor 直接运行到光标所在行

    七、知识点总结

  • Lambda 匿名函数:单行、带返回值,多用于排序 key、临时函数参数;
  • 文件操作核心:r 读、w 清空写、a 追加写,with open自动关闭文件;
  • 文件读取三方法:read (全部 / 分段)、readlines (行列表)、readline (单行循环);
  • 异常处理:try 放风险代码,except 捕获报错,else 无异常执行,finally 释放资源;
  • Debug 断点调试:熟练使用 F7/F8/F9 快速定位代码逻辑错误。
  • 八、结尾

    本文覆盖 Python 文件与异常全部实操内容,所有代码均可直接复制运行,适合零基础自学、期末复习、面试快速复盘。如果对你有帮助,欢迎点赞收藏~

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » AI大模型学习分享
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!