Python 语法精炼16
断言 断言(assertion) 是一种 自我检查机制,用于判断程序运行时某个条件是否为真。 当条件为假时,程序会抛出异常(AssertionError)并终止执行,以提示你“程序状态不符合预期”。 简单说: “我确信这里必须是 True,否则说明有 bug。” 语法结构 1assert 条件, 错误提示(可选) 📘 举例: 123x = 10assert x > 0, "x 必须是正数"print("继续执行...") ✅ 输出: 1继续执行... ❌ 若条件不成立: 12x = -5assert x > 0, "x 必须是正数" 报错: 1AssertionError: x 必须是正数 执行原理 assert 的本质相当于: 12if not 条件: raise AssertionError(错误提示) 也就是说,断言会在条件为 False 时自动抛出异常。 例如: 12345# 以下两者等价assert x > 0, "x 必须大于 0"if not x > ...
Python 语法精炼15
lambda 表达式 Lambda 表达式(Lambda expression) 也称为 匿名函数(Anonymous function),就是没有名字的临时函数。它用于简化代码,尤其是在需要将函数作为参数的场景中(比如 map()、filter()、sorted() 等)。 在 Python 中,它是通过关键字 lambda 定义的。 语法结构 1lambda 参数列表: 表达式 lambda:关键字,表示匿名函数; 参数列表:和普通函数的参数类似,可以有多个参数; 表达式`:必须是一个单一表达式,不能写多行语句; 返回值:表达式的计算结果会自动作为返回值。 举例: 12345678# 普通函数def add(x, y): return x + y# 等价的 lambda 写法add_lambda = lambda x, y: x + yprint(add_lambda(3, 5)) # 输出 8 核心特征 特征 描述 匿名性 没有函数名,用完即丢 简洁性 一行定义一个函数 函数式编程风格 常与高阶函数(map、filter、reduce、so...
Python 语法精炼14
match / case 语句 该用法在 Python3.10+ 加入 1234567match <subject>: case <pattern1>: <statements1> case <pattern2>: <statements2> case _: <default_statements> match:开始匹配语句。 <subject>:要进行匹配的值(类似 switch 的“输入值”)。 case:每个分支的匹配模式。 _:通配符,表示 “任意匹配”(类似 default)。 匹配成功后只执行第一个符合的 case,不会自动贯穿(即不需要 break)。 基本概念 传统 if-elif 判断是布尔逻辑,而 match/case 是 结构解构 + 匹配。 例如: 1234567match x: case 0: print("zero") case 1: print(...
Python 语法精炼13
else 语法结构 Python 的循环结构(for 或 while)都可以带一个可选的 else 子句: 123456for item in iterable: # 循环体 ...else: # 仅当循环“正常结束”时执行 ... 123456while condition: # 循环体 ...else: # 仅当循环“正常结束”时执行 ... else 执行逻辑 情况 是否执行 else 循环 正常执行完毕 ✅ 执行 循环 被 break 提前终止 ❌ 不执行 循环体 从未执行过 ✅ 执行 循环中遇到 continue ✅ 不影响 else 的执行 for...else 示例 示例 1:无 break,循环正常结束 1234for i in range(3): print(i)else: print("循环正常结束") 输出: 1234012循环正常结束 ✅ 因为循环没有被中断,else 执行。 示例 2:循环被 break 中断 123456for i in ra...
Python 语法精炼12
属性的基本概念 类属性(Class Attribute) 定义:直接定义在类体中的属性,所有实例共享。 特点: 存储在类对象的 __dict__ 中。 实例可访问,但若同名实例属性存在,则实例属性优先。 示例: 123456class C: kind = "human" # 类属性a = C(); b = C()a.kind = "robot" # 给实例加了新的属性,不影响类属性print(b.kind) # "human" 实例属性(Instance Attribute) 定义:定义在方法(通常是 __init__)内部,绑定到具体实例。 示例: 123class C: def __init__(self, name): self.name = name # 实例属性 属性的可见性与命名约定 公有属性(public) 无前缀,例如 name,可以被外部直接访问。 受保护属性(protected) 以下划线 _ 开头,如 _cache ...
Python 语法精炼11
装饰器 装饰器的本质是一个函数,它接收另一个函数作为参数(被装饰函数),返回一个新的函数对象。 简单说: “装饰器 = 一个接收函数并返回函数的函数。” 例子: 123456789101112def decorator(func): def wrapper(): print("函数开始执行") func() print("函数执行结束") return wrapper@decoratordef say_hello(): print("Hello!")say_hello() 输出: 123函数开始执行Hello!函数执行结束 等价于: 12say_hello = decorator(say_hello)say_hello() @decorator 只是语法糖。 装饰器的返回值会替换原函数。 本质是:func = decorator(func)。 工作机制 123@装饰器名def 函数名(...): ... 等价于: 1函数名 = 装饰器名(函数名) ...
Python 语法精炼10
上下文管理器 在 Python 中,上下文管理器是一种对象,它定义了程序在进入和退出某个运行环境时的行为。 简单说: “上下文管理器可以在一段代码执行前后自动执行特定操作。” 最常见的例子: 12with open('data.txt', 'r') as f: content = f.read() 这段代码的行为是: 进入上下文:调用 open() → 创建文件对象。 执行代码块:with 缩进内的语句。 退出上下文:自动调用 f.close(),即使中途发生异常也会关闭文件。 工作原理 语法结构 12with 表达式 [as 变量]: 代码块 工作流程 执行 表达式,获取一个上下文管理器对象。 调用该对象的 __enter__() 方法。 如果有 as 变量,将 __enter__() 的返回值赋给 变量。 执行 with 代码块中的语句。 当代码块执行完毕(无论是否发生异常): 调用对象的 __exit__(exc_type, exc_value, traceback)。 __exit__ 决定...
Python 语法精炼9
基本概念:短路求值 and、or 在 Python 中按照 从左到右 的顺序求值。 短路规则: A and B:先求 A,如果 A 是 假值(falsy),直接返回 A(不计算 B);否则返回 B 的值(会计算 B)。 A or B:先求 A,如果 A 是 真值(truthy),直接返回 A(不计算 B);否则返回 B 的值(会计算 B)。 注意:and/or 不一定返回 True/False,而是返回其中一个操作数(第一个决定结果的操作数或最后一个操作数)。 真值 / 假值(truthy / falsy) 在布尔上下文中,以下常被视为假值(falsy): False, None 数值 0, 0.0, 0j 空序列/集合:'', (), [], {}, set() 自定义对象如果实现 __bool__() 返回 False 或 __len__() 返回 0 其它一般都是真值(truthy) 返回值规则 1234567891011121314151617# or 示例>>> "a" or "b"'...
Python 语法精炼8
字符串格式化 方法 Python 版本 示例 % 运算符格式化 Python 2+ "Hello %s" % name str.format() 方法 Python 2.6+ "Hello {}".format(name) f-string(格式化字符串字面量) Python 3.6+ f"Hello {name}" 方式一:旧式 C 风格的 % 格式化 Python 最早的字符串格式化方式,语法类似于 C 语言的 printf。 基本用法 123name = "Alice"age = 25print("My name is %s and I'm %d years old." % (name, age)) 输出: 1My name is Alice and I'm 25 years old. 常见格式说明符 符号 含义 示例 %s 字符串(str()) %s %r 原始表示(repr()) %r %d 十进制整数...
Python 语法精炼7
下划线常见用法 形式 名称 常见用途 示例 _ 单下划线 临时变量 / 忽略值 / 上一次结果 _ = 5,for _ in range(3) _var 单前导下划线 弱“内部使用”标识(受保护属性) _helper() __var 双前导下划线 名称改写(Name Mangling),避免子类冲突 self.__count var_ 单尾下划线 避免与关键字冲突 class_ = "MyClass" __var__ 双前后下划线 Python 特殊方法或魔术方法(magic methods) __init__, __len__ 下划线详细讲解 _ 单下划线 📌 含义 1:忽略的变量(占位符) 当变量值不重要时,使用 _ 表示“我不关心这个值”: 12for _ in range(5): print("Hello") 表示循环 5 次,但不关心循环变量。 再比如: 1x, _, y = (1, 2, 3) 忽略中间的值。 📌 含义 2:交互式解释器中上一个结果 在 Python REPL(交互模...
