说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 是一门“易学难精”的语言。除了基础语法,掌握一些 Pythonic(地道)的技巧,可以让你的代码更简洁、更高效,也更像出自高手之手。
以下我为你整理了几个不同层面的实用技巧:
这是 Python 最具代表性的语法糖。它可以让你用一行代码代替繁琐的 for 循环。
# 传统写法
squares = []
for x in range(10):
squares.append(x**2)
# Pythonic 写法
squares = [x**2 for x in range(10)]
() 代替 []。它不会一次性把数据加载进内存,而是按需生成,极大地节省内存。解包不仅可以用于交换变量,还可以处理不确定长度的列表。
a, b = b, a (不需要中间变量 temp)。first, *middle, last = [1, 2, 3, 4, 5]
# first = 1, middle = [2, 3, 4], last = 5
| 运算符。dict1 = {"a": 1}
dict2 = {"b": 2}
combined = dict1 | dict2
.get() 和 .setdefault(): 避免频繁判断 Key 是否在字典中,防止 KeyError。如果你发现多个函数都需要执行相同的逻辑(如:计时、打印日志、权限检查),请使用装饰器。它能让你在不修改原函数代码的前提下,增加额外的功能。
装饰器本质上是一个闭包,它接受一个函数作为参数,并返回一个增强版的函数。
为了让你直观理解,我们来看一个最经典的使用场景:计算函数的运行时间。
假设你有一段代码运行很慢,你想知道具体耗时多久。
import time
# 定义装饰器
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time() # 1. 记录开始时间
result = func(*args, **kwargs) # 2. 执行原函数
end_time = time.time() # 3. 记录结束时间
print(f"函数 {func.__name__} 运行耗时: {end_time - start_time:.4f} 秒")
return result # 4. 返回原函数的执行结果
return wrapper
# 使用装饰器
@timer
def heavy_computation():
"""模拟一个耗时的计算任务"""
time.sleep(1.5)
print("计算完成!")
heavy_computation()
heavy_computation 函数内部的任何代码,只需要在定义上方加一个 @timer。@timer,而不用在每个函数里写重复的 time.time() 代码。*args 和 **kwargs,这确保了无论原函数有多少个参数,装饰器都能正常工作。functools.wraps当你使用装饰器后,原函数的元数据(如函数名 __name__ 和文档字符串 __doc__)会被 wrapper 覆盖。为了保留原函数的信息,通常会在 wrapper 上再加一个装饰器:
from functools import wraps
def timer(func):
@wraps(func) # 保持原函数的元数据
def wrapper(*args, **kwargs):
# ... 逻辑同上 ...
pass
return wrapper
处理文件、数据库连接或网络请求时,永远记得用 with。它能保证即使程序报错,资源也能被正确关闭,避免内存泄漏。
with open('test.txt', 'r') as f:
data = f.read()
# 无需手动 f.close()
很多功能不需要手写,Python 自带的库非常强大:
collections.Counter: 快速统计元素出现次数。itertools: 提供各种高效的迭代器(排列组合、无限循环等)。pathlib: 比起老的 os.path,处理文件路径更加面向对象且易读。Python 3.6 引入的 f-string 是目前最快、最直观的格式化方式:
name = "Gemini"
print(f"Hello, {name.upper()}! The result is {10 * 5}.")
想要进阶,最好的方式是养成查看官方文档和阅读优秀开源代码(如 Flask, Requests)的习惯。
(完)
更新时间:2026-01-11 22:13:48 标签:python 技巧