利用上下文管理器管理资源
使用上下文管理器(with语句)可以确保资源(如文件、网络连接)被正确关闭,即使发生异常也是如此。这比传统的try-finally语句更加简洁和可读。
文件操作示例
传统方式需要显式关闭文件,而使用with语句可以自动处理:
# 传统方式f = open('file.txt', 'r')try: content = f.read()finally: f.close()# 优雅方式with open('file.txt', 'r') as f: content = f.read()使用列表推导式简化循环
列表推导式提供了一种简洁的方式来创建列表,替代了繁琐的for循环和append操作。
平方数列表生成
比较传统循环与列表推导式的差异:
# 传统方式squares = []for x in range(10): squares.append(x2)# 优雅方式squares = [x2 for x in range(10)]利用enumerate获取索引和值
当需要同时访问序列的索引和值时,enumerate函数比手动管理索引更加清晰。
遍历列表示例
# 传统方式items = ['a', 'b', 'c']for i in range(len(items)): print(i, items[i])# 优雅方式for i, item in enumerate(items): print(i, item)使用zip同时遍历多个序列
zip函数可以将多个序列中的元素配对,使得同时遍历变得简单直观。
并行迭代示例
# 传统方式names = ['Alice', 'Bob', 'Charlie']ages = [25, 30, 35]for i in range(len(names)): print(names[i], ages[i])# 优雅方式for name, age in zip(names, ages): print(name, age)使用collections.defaultdict处理缺失键
defaultdict在字典键不存在时提供默认值,避免了繁琐的if检查或try-except块。
单词计数示例
from collections import defaultdict# 传统方式word_count = {}for word in words: if word in word_count: word_count[word] += 1 else: word_count[word] = 1# 优雅方式word_count = defaultdict(int)for word in words: word_count[word] += 1使用f-string进行字符串格式化
Python 3.6引入的f-string提供了更直观、更易读的字符串格式化方式。
字符串拼接示例
# 传统方式name = Aliceage = 25message = Hello, + name + . You are + str(age) + years old.# 优雅方式message = fHello, {name}. You are {age} years old.使用any和all函数进行逻辑判断
any和all函数可以简洁地检查可迭代对象中是否满足某些条件。
条件检查示例
# 检查列表中是否有偶数numbers = [1, 3, 5, 8, 9]# 传统方式has_even = Falsefor num in numbers: if num % 2 == 0: has_even = True break# 优雅方式has_even = any(num % 2 == 0 for num in numbers)使用generator表达式处理大数据集
生成器表达式可以高效处理大量数据,因为它不会一次性将所有数据加载到内存中。
大文件处理示例
# 传统方式(可能内存不足)sum_of_squares = sum([x2 for x in range(1000000)])# 优雅方式(内存友好)sum_of_squares = sum(x2 for x in range(1000000))使用collections.Counter进行计数统计
Counter类专门用于计数场景,提供了丰富的统计功能。
元素频率统计
from collections import Counter# 传统方式frequency = {}for item in items: frequency[item] = frequency.get(item, 0) + 1# 优雅方式frequency = Counter(items)使用unpacking操作符简化赋值
Python的unpacking特性可以让多个赋值操作更加简洁。
变量交换示例
# 传统方式a = 1b = 2temp = aa = bb = temp# 优雅方式a, b = b, a函数返回多个值
# 返回多个值def get_user_info(): return Alice, 25, alice@example.com# 优雅的接收方式name, age, email = get_user_info()

被折叠的 条评论
为什么被折叠?



