Python 常用优雅写法

以下是最常用且能显著提升代码质量的 Pythonic 写法:

一、遍历与循环类

  1. enumerate() 替代 range(len())
    需要同时获取索引和元素时,用 enumerate 更简洁,还可指定起始索引 :
    pythonfor i, item in enumerate(items, start=1):
    print(f"{i}: {item}")
  2. zip() 并行迭代多个序列
    避免手动索引多个列表 :
    pythonfor name, score in zip(names, scores):
    print(name, score)
  3. itertools.product() 扁平化嵌套循环
    遍历多个可迭代对象的笛卡尔积时避免多层嵌套 。

二、推导式与生成器

  1. 列表推导式替代 for 循环

声明式地创建列表,更简洁且往往更快 :

pythonsquares = x**2 for x in range(10) if x % 2 == 0
还有字典推导式 {x: x** 2 for x in range(5)}、集合推导式等 。

  1. 生成器表达式处理大数据

把方括号换成圆括号实现惰性求值,避免一次性生成整个列表、节省内存 :

pythonsum(x2 for x in range(106))

三、赋值与解包

  1. 多重赋值与变量交换

无需临时变量即可交换 :

pythona, b = b, a

  1. 星号解包

捕获序列的首尾和中间部分 :

pythonfirst, *middle, last = 1, 2, 3, 4, 5

四、语法特性

  1. f-string 格式化字符串

Python 3.6+ 引入,直观且支持表达式和高级格式控制 :

pythonprint(f"Pi is ~ {pi:.2f}")

  1. 海象运算符(:=,Python 3.8+)

在表达式内部完成赋值,简化循环和条件判断 :

pythonwhile (line := file.read()):

process(line)

  1. 链式比较与三元表达式

pythonif 18 <= age < 60: ... # 链式比较

result = "big" if x > 10 else "small" # 三元

五、资源与安全访问

  1. with 语句管理资源

文件等资源自动关闭,即使发生异常也能清理 :

pythonwith open('file.txt') as f:

content = f.read()

  1. 字典安全访问

用 get() 或 defaultdict 避免 KeyError :

pythonvalue = my_dict.get("key", "default")

六、其他实用技巧

any() / all():一行替代整个检查循环

字典合并:Python 3.9+ 可用 | 运算符合并字典,也可用 {**d1, **d2}

set 做成员查找:集合查找是 O(1),比列表 O(n) 快

collections.Counter:高效计数

pathlib:跨平台路径处理,如 Path("data") / "file.txt"

join() 拼接字符串:比 + 拼接效率高约 3 倍

函数命名用 snake_case 而非 camelCase,符合 PEP 8 规范

⚠️ 注意事项

可读性第一:如果某个技巧反而让代码难懂,就应选择更明确的写法

注意版本:海象运算符需 Python 3.8+,字典合并 | 需 3.9+,f-string 需 3.6+

Lambda 局限:只适合简单表达式,复杂逻辑应使用 def 定义常规函数

避免可变默认参数:函数默认参数不要用 \[\] 或 {},应设为 None 再在函数内初始化 。

总体而言,这些技巧虽小,但能在日常开发中显著提升代码的可读性、健壮性和性能 。

相关推荐
vx_Biye_Design22 分钟前
springboot小学生英语学习APP62773-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·学习·课程设计
打工仔折腾 AI34 分钟前
用UU远程把家里电脑变成AI Agent常驻服务器:CLI、端口映射与代理实测
运维·服务器·人工智能·后端·python·电脑·ai agent 实战
泡海椒1 小时前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel
念越1 小时前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest
言乐61 小时前
Python贪心算法实现搜索推荐
python·django·virtualenv·pygame·tornado
benchmark_cc1 小时前
A股量化尾盘筛选对数据时效敏感:行情链路变慢时先排查哪里?
python·数据分析·pandas·量化交易·股票数据·quantdash
白杨尚青1 小时前
C++入门篇(十三):vector(上)——动态数组:构造、空间增长与迭代器失效
开发语言·c++·笔记·算法·stl
江江爱编程1 小时前
java零基础保姆级教学01
java·开发语言
vx_Biye_Design1 小时前
expressDeepSeek社团咨询助手的学生社团管理系统60746-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·课程设计·express
泡茶喝茶写代码2 小时前
A股量化数据工程:从 REST 接口到策略信号(第 5 篇):板块成分股映射与对齐
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据接口