Appearance
Python 控制流与函数速查:if/for/while、range/enumerate/zip、break/continue、函数定义、参数类型(默认/关键字/*args/**kwargs)、lambda、作用域、异常处理。一段代码一个点,看完即用。
速查总览
python
# === 条件 ===
if x > 0:
print("pos")
elif x == 0:
print("zero")
else:
print("neg")
# === for 循环 ===
for i in range(5): # 0..4
pass
for idx, val in enumerate(lst): # 同时取下标和值
print(idx, val)
for a, b in zip(list1, list2): # 并行遍历两个列表
pass
for k, v in d.items(): # 遍历字典
pass
for i in range(10):
if i == 3: continue # 跳过本次
if i == 8: break # 终止循环
else: # 循环没被 break 才执行
print("completed")
# === while ===
while x < 10:
x += 1
# === 异常 ===
try:
r = 1 / x
except ZeroDivisionError as e:
print("除零", e)
except (TypeError, ValueError):
print("类型或值错误")
else: # 无异常时执行
print("成功")
finally: # 无论是否异常都执行
print("清理")函数速查
python
# === 定义与调用 ===
def greet(name, greeting="你好"): # 默认参数
"""文档字符串:说明函数用途"""
return f"{greeting}, {name}"
greet("张三") # 用默认
greet("张三", greeting="嗨") # 关键字参数(可读性更好)
# === 任意数量参数 ===
def f(*args, **kwargs):
# args → 元组 (1,2,3);kwargs → 字典 {'a':1}
pass
f(1, 2, 3, a=1, b=2)
# === 解包传参 ===
lst = [1, 2, 3]
f(*lst) # 列表解包成位置参数
d = {"a": 1}
f(**d) # 字典解包成关键字参数
# === lambda 匿名函数 ===
f = lambda x: x * 2 # 等价 def f(x): return x*2
sorted(lst, key=lambda x: x[1]) # 按第二元素排序
# === 作用域 ===
# LEGB:局部 → 外层 → 全局 → 内置
x = 10 # 全局
def f():
global x # 声明修改全局
x = 20
nonlocal y # 嵌套函数中修改外层局部
# === 返回多个值 ===
def minmax(lst):
return min(lst), max(lst)
lo, hi = minmax(lst) # 自动解包成元组内置函数高频速查
python
map(func, iterable) # 逐个应用:map(str, [1,2])
filter(func, iterable) # 过滤:filter(lambda x: x>0, lst)
sorted(iterable, key=, reverse=) # 排序
enumerate(iterable, start=0)
zip(*iterables) # 拉链
any(lst) / all(lst) # 任一/全部为真
len / sum / max / min / abs / round
type(x) / isinstance(x, int)
print(*objs, sep=" ", end="\n")
input("提示") # 读一行字符串
repr(x) / str(x)常见坑
else挂在循环上:for...else的else在循环未被 break 时执行——不是"否则跳过循环"- 默认参数求值一次:
def f(x, arr=[])的arr是同一个列表——用arr=None *args顺序:def f(a, b=1, *args, **kwargs)——位置、默认、*args、**kwargs固定顺序- lambda 里别写复杂逻辑:只能写单个表达式;多行逻辑用普通函数
- 异常别裸
except::会吞掉 KeyboardInterrupt 等;至少except Exception: try/finally用于释放资源:但 Pythonic 首选with(见Python-速查-常用模块与文件IO的文件部分)
一句话总结
遍历三件套 range/enumerate/zip 覆盖九成循环;函数参数顺序固定为位置 → 默认 → *args → **kwargs,两个经典坑是 for...else 只在没 break 时执行、默认参数 arr=[] 跨调用共享。