本文最后更新于45 天前,在知识的增长过程中难免会有错误的理解,如有您发现有错误或者有不同的见解请发送邮件到thelistenerofrain@163.com或者留言~
1. 列表推导式(List Comprehension)
用一行代码创建新列表。
Python编辑squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
类似还有:字典推导式
{k: v for k, v in ...},集合推导式{x for x in ...}
2. 解包(Unpacking)
基础解包:
Python编辑a, b, c = [1, 2, 3] # a=1, b=2, c=3
星号解包(收集多余元素):
Python编辑first, *middle, last = [1, 2, 3, 4, 5]
# first=1, middle=[2,3,4], last=5
函数调用解包:
Python编辑print(*[1, 2, 3]) # 等价于 print(1, 2, 3)
3. f-string(格式化字符串字面值) —— Python 3.6+
最推荐的字符串格式化方式!
Python编辑name = "Alice"
age = 25
print(f"Hello, {name}! You are {age} years old.")
# 支持表达式:
print(f"Next year you'll be {age + 1}.")
比
%和.format()更快、更清晰!
4. 三元运算符(条件表达式)
一行实现 if-else 赋值:
Python编辑status = "adult" if age >= 18 else "minor"
5. enumerate() 和 zip()
enumerate():同时获取索引和值
Python编辑for i, value in enumerate(['a', 'b', 'c']):
print(i, value)
# 输出: 0 a, 1 b, 2 c
zip():并行遍历多个序列
Python编辑names = ['Alice', 'Bob']
ages = [25, 30]
for name, age in zip(names, ages):
print(f"{name} is {age}")
6. 切片(Slicing)
强大而简洁的序列截取:
Python编辑lst = [0, 1, 2, 3, 4]
lst[1:4] # [1, 2, 3]
lst[::-1] # [4, 3, 2, 1, 0] (反转)
lst[::2] # [0, 2, 4] (步长为2)
适用于 list, tuple, str 等。
7. 上下文管理器(with 语句)
自动管理资源(如文件、锁等),避免忘记关闭。
Python编辑with open('file.txt') as f:
data = f.read()
# 文件自动关闭,即使出错也会安全释放
你也可以自定义上下文管理器(用
__enter__/__exit__或contextlib)。
8. 生成器(Generator)与 yield
节省内存地处理大数据:
Python编辑def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
for num in count_up_to(3):
print(num) # 1, 2, 3
比返回完整列表更省内存!
9. 装饰器(Decorator)
在不修改函数代码的前提下增强功能。
Python编辑def log(func):
def wrapper(*args, **kwargs):
print(f"Calling {func.__name__}")
return func(*args, **kwargs)
return wrapper
@log
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # 先打印日志,再执行
10. 海象运算符(Walrus Operator) —— Python 3.8+
在表达式中赋值(避免重复计算):
Python编辑# 以前:
data = input("Enter something: ")
if len(data) > 5:
print("Too long!")
# 现在(一行搞定):
if (n := len(input("Enter something: "))) > 5:
print(f"Too long! Length = {n}")
符号:
:=
11. 多重赋值 & 交换变量
Python编辑a, b = 1, 2
a, b = b, a # 交换!无需临时变量
12. 链式比较
Python编辑x = 5
if 0 < x < 10:
print("x is between 0 and 10")
等价于 0 < x and x < 10,但更自然。
13. 默认字典(defaultdict)和计数器(Counter)
来自 collections 模块,超实用!
Python编辑from collections import defaultdict, Counter
# 自动初始化不存在的键
d = defaultdict(int)
d['a'] += 1 # 不会报错
# 快速统计元素出现次数
c = Counter(['apple', 'banana', 'apple'])
# Counter({'apple': 2, 'banana': 1})
总结:Python 的核心语法哲学
“Beautiful is better than ugly.”
“Simple is better than complex.”
—— 《The Zen of Python》(import this)
这些语法特性都体现了 Python 追求 可读性、简洁性和表达力 的设计思想。