Python 10 个超实用小技巧,提升开发效率
前言
Python 以其简洁易读的语法著称,在处理复杂琐碎的重复性工作时,掌握一些核心技巧能显著提升开发效率。本文整理了十个在 Python 编程中非常实用的小技巧,涵盖变量赋值、字符串处理、内存管理及推导式等常见场景。这些代码片段可直接运行,建议开发者在实际项目中参考使用。
本文介绍了 Python 开发的十个实用技巧,包括列表解包、交互模式历史输出、字符串 join 连接、列表翻转、内存占用检测、字符串乘法、大小写转换、列表转字典、字典默认值获取以及推导式的使用。内容涵盖语法细节、性能对比及最佳实践,旨在帮助开发者提升编码效率和代码质量。

Python 以其简洁易读的语法著称,在处理复杂琐碎的重复性工作时,掌握一些核心技巧能显著提升开发效率。本文整理了十个在 Python 编程中非常实用的小技巧,涵盖变量赋值、字符串处理、内存管理及推导式等常见场景。这些代码片段可直接运行,建议开发者在实际项目中参考使用。
我们可以通过列表(或元组)来给多个变量同时赋值,只需要列表元素的个数和变量个数对应即可。这是 Python 特有的语法糖,常用于交换变量值或从函数返回多个结果。
# 基础用法
values = [1, 2, 3]
a, b, c = values
print(a, b, c) # 输出:1 2 3
# 交换变量值
x, y = 10, 20
x, y = y, x
print(x, y) # 输出:20 10
注意:如果序列长度与变量数量不匹配,会抛出 ValueError。建议使用 * 操作符进行部分解包以处理长度不确定的情况。
在 Python 的交互式环境(如 IPython 或 REPL)中,下划线 _ 表示上一个表达式的输出。这在快速调试或连续计算时非常方便。
>>> 2 * 3
6
>>> _
6
>>> _ + 10
16
注意:此特性仅适用于交互式会话。在脚本文件中,_ 通常用于国际化占位符,不建议依赖其存储中间结果,应显式定义变量以保证代码可读性和可维护性。
通过 join 方法可以高效地链接列表中的元素生成新字符串。相比使用循环拼接,join 的性能更优,因为它避免了频繁的字符串创建开销。
words = ['I', 'Like', 'Python']
result = ' '.join(words)
print(result) # 输出:I Like Python
# 分隔符可以是任意字符
path_parts = ['home', 'user', 'docs']
full_path = '/'.join(path_parts)
print(full_path) # 输出:home/user/docs
最佳实践:在处理大量字符串拼接时,始终优先使用 join 而非 + 运算符。
翻转列表是基础的常用操作。Python 提供了两种主要方式:原地修改的 reverse() 方法和切片复制法。
words = ['I', 'Like', 'Python']
# 方法一:原地反转 (in-place)
words.reverse()
print(words) # 输出:['Python', 'Like', 'I']
# 方法二:切片复制 (返回新列表)
original = ['I', 'Like', 'Python']
reversed_list = original[::-1]
print(reversed_list) # 输出:['Python', 'Like', 'I']
区别:reverse() 直接修改原列表对象,不返回新列表;切片 [::-1] 会创建一个新列表,原列表保持不变。根据是否需要保留原数据选择合适的方法。
虽然现代计算机硬件内存充足,但在处理大规模数据或嵌入式开发时,仍需关注内存占用。可以通过 sys 模块的 getsizeof 函数来获取变量的内存大小。
import sys
value = 100
size = sys.getsizeof(value)
print(f"Integer {value} takes {size} bytes") # 输出:Integer 100 takes 28 bytes
large_list = list(range(1000))
print(f"List size: {sys.getsizeof(large_list)} bytes")
注意:getsizeof 仅返回对象本身的开销,不包含引用对象的大小。对于包含其他对象的容器(如列表),需递归计算总占用。
多次打印字符串是 Python 的一个便捷功能,常用于调试输出或生成格式化文本中的分割线。
# 生成分割线
separator = '#' * 20
print(separator)
print("This is a separator line")
print(separator)
# 输出:
# ####################
# This is a separator line
# ####################
应用场景:在日志输出、命令行工具界面或简单的文本报告中,利用此特性可以快速构建视觉分隔符。
将字符串的第一个字母变为大写有多种方法,title() 会将每个单词的首字母大写,而 capitalize() 仅处理第一个字符。根据需求选择。
word = 'python'
# title(): 每个单词首字母大写
print(word.title()) # 输出:Python
# capitalize(): 仅第一个字符大写
print('hello world'.capitalize()) # 输出:Hello world
# upper/lower: 全大写/小写
print('PYTHON'.lower()) # 输出:python
提示:处理自然语言文本时,注意 title() 对缩写词的处理可能不符合预期(如 "don't" 会变成 "Don'T")。
将相同元素个数的两个列表变为字典,可以使用内置的 zip 函数配合 dict 构造函数。这是键值对映射的常用技巧。
keys = ["a", "b", "c"]
values = [1, 2, 3]
# 组合成字典
data_dict = dict(zip(keys, values))
print(data_dict) # 输出:{'a': 1, 'b': 2, 'c': 3}
# 处理长度不一致的情况
keys2 = ["a", "b", "c", "d"]
values2 = [1, 2]
dict(zip(keys2, values2)) # 输出:{'a': 1, 'b': 2},多余键被忽略
扩展:若需保留所有键,可使用 collections.defaultdict 或手动填充默认值。
访问字典中不存在的键通常会抛出 KeyError。使用 get 方法可以安全地获取值并设置默认返回值,类似 Java 中的 map.getOrDefault()。
d = {'a': 1, 'b': 2}
# 存在则返回值
val_a = d.get('a')
print(val_a) # 输出:1
# 不存在则返回 None
val_c = d.get('c')
print(val_c) # 输出:None
# 指定默认值
val_default = d.get('c', 300)
print(val_default) # 输出:300
进阶:对于需要频繁检查键是否存在且提供复杂默认值的场景,推荐使用 collections.defaultdict。
字典推导式和集合推导式是 Python 最强大的功能之一,允许用简洁的语法创建数据结构,通常比传统循环更高效且可读性更好。
# 字典推导式
squares = {i: i*i for i in range(5)}
print(squares) # 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 集合推导式
unique_squares = {i*i for i in range(5)}
print(unique_squares) # 输出:{0, 1, 4, 9, 16}
# 列表推导式
nums = [i for i in range(5)]
print(nums) # 输出:[0, 1, 2, 3, 4]
# 带条件的列表推导式
evens = [i for i in range(10) if i % 2 == 0]
print(evens) # 输出:[0, 2, 4, 6, 8]
性能提示:推导式通常在内存使用和执行速度上优于等效的 for 循环,但过于复杂的逻辑仍建议拆分为普通循环以提高可读性。
以上十个技巧涵盖了 Python 日常开发中的高频场景。熟练掌握这些语法特性和内置函数,不仅能减少代码量,还能提升程序的可读性与执行效率。建议在实际编码中有意识地应用这些模式,逐步积累自己的代码库。如有更多 Python 优化技巧,欢迎在技术社区交流分享。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online