Python自学笔记第28篇–异常1在Python中,我们要捕获异常,来确保程序的正常运行。
什么是异常,异常是错误吗?
第一个知识点:异常和错误傻傻分不清楚
1:什么是错误
首先说下错误,错误一般是指语法错误,也就是书写代码的时候,没有按照Python的语法规则进行书写导致的程序错误。
例如:
if a==1
print(‘这就是语法错误’)
因为Python要求if的结束要以冒号‘:’结尾,你没有在条件语句a==1后面加‘:’的话,Python就看不懂你写的什么东西,于是就会报错。
这样的错误,我们称为语法错误(Syntax Error),报错的时候见到Syntax Error,你就检查一下你的代码是不是语法格式出错了,导致Python认识不了了。
错误一般是你粗心或者对Python语法格式不太熟练的情况下导致的,说白了就是你编写代码的时候写不对导致的,再通俗点就是不会写导致的。错误是可避免的,多练就对了。
2:什么是异常
异常不是语法的错误,一般情况下语法格式没有问题,但是运行过程中出现了意外情况。当然这些意外情况一般是可以预见的。 ...
Python 程序员必修课:为什么说 *args 和 **kwargs 是“万能接口”?你有没有遇到过这种场景:写了一个函数,参数死板得像石头,非得按照顺序一个个传。如果临时想多加几个参数,立马报错。于是你只能不停改函数定义,改着改着自己都乱了。
其实 Python 早就给了我们一个神器,专门解决这种“参数不确定”的尴尬场景——那就是 *args 和 **kwargs。别被这两个名字吓到,它们的本质其实就是两个袋子:
一个袋子专门装位置参数(*args → 元组);
另一个袋子专门装关键字参数(**kwargs → 字典)。
只要学会用这两个袋子,你的函数立刻灵活到飞起。
1. 最直观的感受:把参数全都装起来我们先看个最常见的例子:
123456def demo_args(a, b, *args, **kwargs): print(f"标准参数: {a}, {b}") print(f"位置参数 (*args): {args} (类型: {type(args)} ...
find相关练习题1.查找/tmp目录下,属主不是root,且文件名不以f开头的文件
1find /tmp ! -user root ! -name "f*"
2.查找/var目录下属主为root,且属组为mail的所有文件
1find /var -user root -group mail -type f
3.查找/var目录下不属于root、lp、gdm的所有文件
1find /var ! -user root ! -user lp ! -user gdm -type f
4.查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
1find /var -mtime -7 ! -user root ! -user postfix -type f
5.查找/etc目录下大于1M且类型为普通文件的所有文件
1find /etc -type f -size +1M
6.将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变
123rs ...
format()格式化输出方法format() 是 Python 中用于字符串格式化的强大工具,它提供了灵活的方式来格式化字符串。以下是 format() 方法的全面介绍。
1. 基本用法123456789# 位置参数print("{} {}".format("Hello", "World")) # 输出: Hello World# 索引参数print("{1} {0}".format("World", "Hello")) # 输出: Hello World# 命名参数print("{name} is {age} years old".format(name="Alice", age=25))# 输出: Alice is 25 years old
2. 数字格式化123456789101112131415 ...
一天一个Python知识点——Day 5: 列表(List)基础操作列表(List)是Python中最灵活的有序集合类型,可以存储任意类型的元素,并且支持动态修改。今天我们将全面学习列表的核心操作!
列表的创建
列表用方括号[]表示,元素之间用逗号分隔:
123456# 创建空列表empty_list = []# 创建带初始值的列表numbers = [1, 2, 3, 4, 5]mixed = [1, "hello", 3.14, True] # 可以混合不同类型nested = [[1, 2], [3, 4]] # 嵌套列表
特殊创建方式:
1234# 使用list()构造函数chars = list("Python") # ['P', 'y', 't', 'h', 'o', 'n']# 列表推导式(后续会详细讲解)squares = [x**2 for x in range(5)] # [0, 1, ...
编程开发
未读python高阶:列表推导式1、python列表推导式是一种高效创建列表的语法结构,能将循环、条件判断、和元素处理合并为一行代码,大幅提升代码简洁性。
2、列表推导式的基本语法结构
[表达式 for 变量 in 可迭代对象 if 条件]
·表达式:对迭代元素进行转换或计算,决定列表元素的最终值。
·for循环:遍历可迭代对象(如列表、元组、字符串、range等)。
·if条件(可选):删选符合条件的元素,仅满足条件的元素会被加入列表。
3、基础遍历与表达式
无需条件筛选时,直接通过表达式转换元素:
1234#生成1-5的平方数列表squares=[x**2 for i in range(1,6)]print(squares) #输出[1,4,9,16,25]#字符串长度列表words=["apple","book","car"]lengths=[len(word) for word in words]print(lengths) #输出[5,4,3]
4、条件筛选(if子句)
在for循环后添加if条件, ...
为什么那么多测试开发选择python语言
语言特性:Python 的设计哲学非常适合写测试代码
1. 语法简洁、可读性强
测试代码往往需要频繁修改和维护,简洁的语法可以大大提升编写效率和团队协作。
没有繁琐的类型声明(动态类型),适合快速写出验证逻辑。
1# 示例:一个简单的 API 测试函数def test_login_api(): response = requests.post("/login", json={"username": "test", "password": "123456"}) assert response.status_code == 200 assert "token" in response.json()
✅ 对比 Java 或 C#,用 Python 写同样的测试逻辑要少很多样板代码。
2. 强大的标准库
12345Python 自带丰富的标准库,比如:os, sys:处理文件系统与路径json, ...
苦练Python第47天:一文吃透继承与多继承🧬 继承的本质:把公共代码薅出来复用1234567891011class Animal: # 父类(基类) def __init__(self, name): self.name = name def speak(self): return "???"class Dog(Animal): # 子类(派生类) def speak(self): return f"{self.name}: 汪汪!">>> d = Dog("旺财")>>> d.speak()旺财: 汪汪!
结论:子类自动拥有父类所有公共属性和方法。
注意:Python 默认所有方法都是 virtual(C++ 术语),想重写就重写。
🔁 方法重写 & 扩展:子类想加料怎么办?1234567class Cat(Animal): def ...
苦练Python第48天:类的私有变量“防身术”,把秘密藏进类里!🧐 为什么需要“藏起来”?在 Python 里,属性默认全是 public,就像把银行卡密码贴在额头上——谁都能改。当你写了一个类给别人用:
123class Person: def __init__(self, money): self.money = money # 公有,谁都能动
用户小手一抖:
12p = Person(100)p.money = -999999 # 余额瞬间蒸发
于是我们需要“私有变量”——给属性加一把锁,让外部“看不见、摸不着”。
🔒 第一招:单下划线 _ ——约定俗成Python 没有真正的 private,但社区有默契:带一个下划线的变量,请把它当私有,别直接碰!
123class Wallet: def __init__(self, cash): self._cash = cash # 内部使用,外部别摸
外部依旧能访问,但 IDE 会画波浪线提醒你:
12w = Wallet(50)print(w._cas ...
字典8大必杀技🧠 字典热身回顾字典的本质就是 键值对:
键必须唯一且不可变(字符串、数字、元组等)
值想放啥就放啥
12345user = { "name": "Alice", "age": 30, "city": "Paris"}
🔍 1. get(key[, default]) —— 安全取值不翻车123print(user.get("age")) # 30print(user.get("email")) # Noneprint(user.get("email", "N/A")) # N/A
✅ 当键不存在时,直接返回 None 或你指定的默认值,程序再也不会因为 KeyError 崩溃。
➕ 2. update(other_dict) —— 一键合并/覆盖123user.update({& ...
