- 博客(52)
- 收藏
- 关注
原创 python学习笔记 | 12.2、错误、调试和测试-调试
写代码时,程序报错、运行结果不对、逻辑出错,我们需要找到错误并修复,这个过程就叫调试(Debug)。Python 给我们准备了5 种调试方法,从简单到高级,我按小白使用顺序print () 打印法(最简单)assert 断言法(进阶版 print)logging 日志法(专业、不删代码)pdb 断点调试(命令行手动调试)IDE 图形调试(最舒服、工作常用)调试 = 找错 + 改错print(变量)assert 条件, 提示logging(工作必用)最舒服:IDE 图形调试。
2026-06-09 11:10:52
256
原创 python学习笔记 | 12.1、错误、调试和测试-错误处理
可能崩的代码丢进try,出错进except收拾残局,收尾操作写在finally,需要上报问题就用raise抛异常。raise:手动抛出异常,主动终止不合理代码;可以自定义异常类(继承内置错误类),也可以直接抛系统自带异常;except 内部单独写raise:原样把捕获的异常继续向上抛出,交给上层处理。# 自定义异常,继承ValueErrorpassn = int(s)if n == 0:raise FooError("数值不能为0:%s"%s) # 主动抛出自定义异常##通俗理解。
2026-06-08 15:45:02
267
原创 python学习笔记 | 12.0、错误、调试和测试
代码可能出错 → 用try-except包起来找错最简单 → 用print()打印变量保证代码正确 → 用assert做测试。
2026-06-04 16:49:47
326
原创 python学习笔记 | 11.5、面向对象高级编程-使用枚举类
unique # 保证值不重复Sun = 0Mon = 1Tue = 2Wed = 3。
2026-06-02 12:39:02
221
原创 python学习笔记 | 11.4、面向对象高级编程-定制类
表格魔法方法核心作用使用场景__str____repr__自定义对象打印内容print(对象)、调试查看对象__iter____next__让对象支持 for 循环自定义可遍历序列支持下标、切片取值模仿列表取值操作动态处理不存在的属性链式调用、动态接口封装__call__对象像函数一样调用把对象当成函数使用魔法方法不用手动调用,Python 在对应场景自动触发,以此扩展类的功能。
2026-06-01 15:49:16
224
原创 python学习笔记 | 11.3、面向对象高级编程-多重继承
一个类同时继承 2 个或更多父类,拥有所有父类的属性和方法。class 子类(父类1, 父类2, 父类3):passMixIn =“混入功能”不是主继承关系(不是 “是什么”)只是额外增加功能(“能做什么”)主线用单一继承(比如 Dog → Mammal → Animal)功能用MixIn 多重继承加进去功能名MixIn不用写复杂继承链,随便组合功能!# 顶层父类:动物pass# 哺乳动物pass# 鸟类pass# 会跑的功能print("我会跑!")# 会飞的功能。
2026-05-29 12:39:58
249
原创 python学习笔记 | 11.2、面向对象高级编程-使用@property
要给类加可控属性,就用@property@property+ 返回self._变量@变量.setter+ 数据检查 + 赋值self._变量只读属性:只写@property,不写 setter变量名前必须加,防止递归崩溃@property = 让方法像属性一样读@xxx.setter = 让方法像属性一样写 + 检查数据实例变量必须用_变量名,避免死循环只写@property就是只读属性好处:代码简单 + 数据安全。
2026-05-20 16:43:04
209
原创 python学习笔记 | 11.1、面向对象高级编程-使用__slots__
slots只管「属性」,不管「方法」!你给实例动态绑方法, 完全管不着,不会报错!
2026-05-20 12:25:17
532
原创 python学习笔记 | 10.2、面向对象编程-访问限制
在变量名前面加两个下划线__→ 变成私有变量类内部可以随便用类外部直接访问会报错# 正确写法self.__name = name # 私有变量bart = Student("小明")print(bart.__name) # 报错!外部不能直接访问保护变量:用__变量名变成私有外部访问:必须用get_xxx()外部修改:必须用set_xxx()(可以加检查,更安全)try /except 就是:提前预判代码会翻车,翻车了不崩溃,兜底处理一下。正常代码报错 → 程序直接卡死、终止。
2026-05-19 13:58:51
505
原创 python学习笔记 |10.1、面向对象编程-类和实例
用class# 定义一个学生类(模板)passStudent:类名(大写开头)(object):固定写法,表示继承(不用深究,照着写就行)pass:空占位,先定义个空类把数据 + 操作数据的函数,都放进类里,外部直接调用,不用管内部怎么实现。和普通函数一样,第一个参数必须是 self# 封装:打印成绩# 封装:判断等级return "A"return "B"else:return "C"定义一个Person类,包含name和age属性,创建一个实例zhangsan。
2026-05-15 17:01:11
245
原创 python学习笔记 | 10.0、面向对象编程
_init__可以写任意代码:判断、循环、打印、计算都能写,不只能赋值属性。一个类里不能写两个__init__,后面的会覆盖前面的,属于重复无效。创建多个实例时,每个实例都会单独跑一遍__init__,互相独立,不会重复冲突。class 用来定义类,类名可以自己随便起名,规范是首字母大写。类里面可以选择性写一个 __init__方法(前后双下划线)。__init__不用手动调用,只要创建实例的一瞬间,Python 会自动调用它。__init__的作用:专门给新创建的实例初始化属性、赋初始值。
2026-05-15 15:49:18
469
原创 python学习笔记 | 9.2、模块-安装第三方模块
你写import 模块名时,Python 会按固定文件夹顺序去找这个模块文件,找不到就报错。如果你自己写的 py 脚本放在D:\mycodeimport sys# 把自己的文件夹加进去只当前运行窗口有效,下次打开还要重新写。
2026-05-11 12:32:35
407
原创 python学习笔记 | 8.4、函数式编程-装饰器
需求:想给函数增加额外功能(比如打印日志),但不修改原函数代码。这种代码运行期间,动态给函数加功能的方式,就叫装饰器。装饰器就是一个接收函数、并且返回函数的高阶函数。# 包装函数,接收任意参数# 新增功能:打印日志# 执行原来的函数# 返回内部的wrapper函数# 第二层:接收原函数# 第三层:包装执行翻译:把套好壳的新函数还给你def log(func): # 你给我一个函数 funcdef wrapper(): # 我给它套个新壳print(...) # 壳里先加个打印功能。
2026-05-07 15:43:13
388
原创 python学习笔记 | 9.1、模块-使用模块
模块 = 一个 .py 文件你写的每一个 Python 文件,本身就是一个模块,可以被别人导入使用。你写了一个tools.py,别人就能拿来用。:固定开头,给 Linux/Mac 指定用 python3 运行,Windows 没用但必写;*-*是固定标签,作用是防止代码中文乱码;开头单独字符串:给整个模块写简介,叫模块文档注释;__author__前后双下划线:是 Python 内置特殊变量,专门用来标注作者。一个 .py = 一个模块import 就能用别人的代码。
2026-05-07 15:34:30
348
原创 python学习笔记 | 8.5、函数式编程-偏函数
临时改成十进制,不影响原来的偏函数。参数太多、每次调用都要写重复参数时,自动把 10 塞到最左边。
2026-05-06 16:07:48
321
原创 python学习笔记 | 8.3、函数式编程-匿名函数
普通函数:需要起名字,用def定义。不用起名字,临时用一下,用lambda关键字定义,一行写完。就简单一个计算逻辑,不想单独写一个 def 函数,省事。匿名函数用lambda,不用 def、不用起名字。lambda 参数: 表达式只能写一个表达式,自动返回结果,不用写 return。适合临时简单逻辑,搭配map、filter用最方便。filter = 过滤器把符合条件的留下来,不符合的丢掉。
2026-04-29 23:45:17
299
原创 python学习笔记 | 8.2、函数式编程-返回函数
传入参数,返回数据结果(数字、字符串、列表等)传入参数,返回另一个函数,不立刻计算结果,需要的时候再调用函数计算。内层函数 引用 外层函数的变量 / 参数;外层函数结束后,外层的变量不会销毁,会被内层函数牢牢保存,这个结构就叫闭包。你学会了不加括号是存函数,不是调函数。✅你理解了循环后i=3。✅你不理解为什么还要多一层。因为这层的作用是把当前的i值作为参数传入,从而在inner的作用域里保存一份独立的副本,而不是共享外层的i。如果你觉得这个三层写法太绕,那就不必强行用它。
2026-04-29 23:13:43
844
1
原创 python学习笔记 | 8.1、函数式编程-高阶函数
✅定义如果一个函数,参数可以接收另一个函数,它就是高阶函数。✅ 核心逻辑:变量能存函数 → 函数能当参数传 → 形成高阶函数。
2026-04-29 07:56:28
250
原创 python学习笔记 | 7.5、高级特性-迭代器
Iterable= 能遍历Iterator= 能一个个取(惰性)iter()= 普通对象变迭代器next()= 手动取迭代器里的值分割线做错的题目,对应回去看之前的总结: - 判断题错了 → 再记“可迭代=能for,迭代器=能next”;- 选择题错了 → 复制代码到Python里运行,看实际结果;- 编程题不会 → 参考实例,先写判断,再转迭代器,最后用next()取值,一步步来。分割线生成器表达式👉yield 生成器函数👉 函数里写 yield。
2026-04-28 02:48:43
394
原创 python学习笔记 | 7.4、高级特性-生成器
生成器核心就是按需计算,不浪费内存函数里写yield就是生成器用for循环遍历生成器,最简单安全首尾是 1,中间 = 上一行相邻两数之和s分割线让列表里每个数字 + 它左边的数字,生成新列表分割线。
2026-04-27 23:56:52
554
原创 python学习笔记 | 7.3、高级特性-列表生成式
for 变量 in 列表if isinstance(变量, str)变量.lower()[加工后 for 遍历 if 筛选]遍历 → 筛选字符串 → 转小写判断类型、lower()转小写列表生成式:一行代码完成循环 + 筛选 + 转换,简洁高效分割线结构是固定模板,顺序不能乱:[加工 for 遍历 if 筛选]分割线为什么加工必须放最前面?不能放后面吗?我用最通俗、最符合直觉的方式给你讲明白👇列表生成式的顺序是固定语法【要什么】 → 【从哪拿】 → 【留哪些】要什么 = 加工(放最前)
2026-04-24 14:34:21
425
原创 python学习笔记 | 7.1、高级特性-切片
好,我们现在学切片(Slice),我按你最习惯的方式来讲:先讲用法 → 再讲规律 → 再带你一步步做练习题切片就是:从列表 / 字符串里,截一段出来写法固定:记住一句铁律:包前不包后→ 包含开头,不包含结尾那个位置结果:结果:结果:结果:三、现在做练习题:trim () 去首尾空格要求:四、程序怎么走?以 为例第一步:处理左边left 从 0 开始s [0] 是空格 → left=1s [1] 是空格 → left=2s [2] = ‘h’ 不是空格 → 停,left=2
2026-04-23 09:49:35
356
原创 python学习笔记 | 6.4、函数-递归函数
return 的值,不是存在某个地方,而是一层一层往上交,直到交给最开始调用函数的地方。一层问下一层:“结果是多少?下一层 return 一个数上一层拿到这个数,继续算。
2026-04-22 10:34:59
579
原创 python学习笔记 | 6.3、函数-函数的参数
info 就是一个 “字典 dict”**info把你传进去的所有 “关键词 = 值”,打包成一个字典。**info= 接收一堆a=1, b=2= 自动变成字典。
2026-04-22 10:34:49
395
原创 python学习笔记 | 6.2、函数-定义函数
def 定义函数return 返回结果pass 占位不报错函数可以返回多个值(其实是元组)调用自己写的函数和用内置函数一模一样把数学求根公式,写成了一个 Python 函数传 a、b、c算平方、开方求出两个解返回结果。
2026-04-21 09:48:09
229
原创 python学习笔记 | 6.1、函数-函数调用
函数 = 现成工具名字 (参数)参数数量、类型要对int()float()str()bool()hex()
2026-04-21 09:47:59
42
原创 python学习笔记 | 5.6、python基础-循环-两种循环
循环就是:让计算机重复做一件事,不用你写一万遍代码。作用:把列表里的东西一个个拿出来用例子:意思:依次把 Bart、Lisa、Adam 放进 name 里,然后打印。想循环数字,用 :② while 循环作用:只要条件满足,就一直循环例子:意思:n 小于 10 就一直跑,直到不满足为止。不想继续跑了,就用 break 跳出。比如遇到偶数不想打印,就 continue。1+2+…+100只打印奇数4. 必记重点for 循环:适合遍历列表、数字while 循环:适合条件不确定的重复
2026-04-20 09:20:23
749
原创 python学习笔记 | 5.5、python基础--模式匹配
match 就是多情况匹配case 对应一种情况case _ 对应 else(其他情况)case 不能直接写age < 16必须写成 case x if x < 16:这是 Python match 语法硬性规定。
2026-04-19 13:51:22
76
原创 python学习笔记 | 5.4、python基础--条件判断
if:满足条件就执行elif:再判断另一个条件else:都不满足就执行必须写必须缩进从上往下判断,满足一个就结束input () 输入的是文字,要转数字用int()
2026-04-19 13:44:27
60
原创 python学习笔记 | 5.3、python基础--使用list和tuple
list []:可变,随便增删改tuple ():不可变,更安全,单元素要加逗号如果你愿意,我可以再给你做一张超简小白速记图,一眼记住所有用法。
2026-04-17 15:47:55
50
原创 python学习笔记 | 5.2、python基础-字符串和编码
编码 = 文字转数字统一用 UTF-8 永远不乱码str是文字bytes是字节encode编码,decode解码格式化字符串用f-string最简单。
2026-04-17 15:46:14
502
原创 软测学习笔记 | Postman | 学习路线
API定义、接口测试价值、HTTP协议(URL/请求方法GET/POST/PUT/DELETE/PATCH/状态码200/400/401/404/500)、请求头Headers、请求体Body | 能说出常见状态码含义,区分GET和POST。| pm.response.to.have.status(200)、pm.expect(jsonData.field).to.eql(value)、断言状态码/响应时间/字段值 | 为登录接口编写3个断言(状态码、token存在、用户名匹配)
2026-04-06 12:43:40
54
原创 软测学习笔记|2026.4.5|sql篇|正则表达式|分组|平均值|保留小数|计数|过滤
用户信息表 user_profile,其中device_id指终端编号(认为每个用户有唯一的一个终端),gender指性别,age指年龄,university指用户所在的学校,gpa是该用户平均学分绩点,active_days_within_30是30天内的活跃天数。总结:刚开始用的是where条件,代码跑不通,原因是where 执行时机早于分组,无法过滤分组后的聚合结果,所以改成having,等待分组后的结果进行过滤。[](方括号):表示“里面的任意一个字符都可以”,只匹配1个。
2026-04-06 12:35:40
482
原创 软测学习笔记|2026.4.3|测试用例设计|场景法|判定法(2.1)
概念 | 解释场景法 | 一种基于用户真实操作路径的测试用例设计方法,通过模拟基本流(正常流程)和备选流(异常/分支流程)来覆盖软件的核心业务场景。基本流 | 按照系统预期、完全正确的操作完成整个业务流程,也称为“快乐路径”。备选流 | 在基本流的某个步骤出现异常、错误或用户干预,导致流程偏离正常路径。
2026-04-05 14:33:39
816
原创 软测学习笔记|2026.4.4|错误推测法|因果图(2)
概念 | 解释因果图 | 一种图形化的测试设计方法,通过分析输入条件(因)和输出结果(果)之间的逻辑关系(与、或、非等),画出因果图,再转化为判定表,最后生成测试用例。适用场景| 输入条件之间有逻辑约束、组合较多的系统(如工单审批、价格计算、权限判断)。核心图形符号 | 恒等(条件成立结果就成立)、非(条件不成立结果成立)、与(所有条件成立结果才成立)、或(任一条件成立结果就成立)。
2026-04-05 14:33:27
404
原创 软测学习笔记|2026.4.3|测试基础理论(1)
概念 | 解释 | 示例定义(经典)| 测试是为发现错误而执行程序的过程 | 运行登录功能,输入错误密码,检查是否有提示定义(现代| 评估软件质量并降低失败风险的过程,含静态和动态测试 | 评审需求文档(静态)+ 执行测试用例(动态)目的:发现缺陷| 找出软件中的bug、错误、遗漏 | 密码错误时没有提示信息目的:验证质量| 确认软件是否满足需求规格 | 需求要求“3秒内响应”,实际2秒 ✅目的:建立信心| 通过测试证明软件达到可发布标准 | 上线前核心流程全部通过目的:降低风险。
2026-04-04 11:35:25
775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅