当前位置: 首页 > news >正文

第1章 变量与注释-Python工匠:案例、技巧与工程实践

🧭 一、核心目标:让代码“可读、可维护、可信任”

这一章的核心思想不是语法,而是 写给人看的代码
变量和注释虽然不会改变执行逻辑,却直接决定别人(包括未来的你)是否能理解你的意图。

写给人读的代码,才是可维护的代码。


🧩 二、变量部分(实践重点)

1. 变量定义与解包

  • 解包赋值 (unpacking)index 操作更直观:

    username, *fruits, score = ['piglei', 'apple', 'orange', 'banana', 100]
    

    ✅ 直观、少错误
    ❌ 不要忘记:左边变量数要和右边结构对应。

🔧 开发场景:解析结构化数据(如 API 响应 / CSV 行)时,比手动切片更安全、可读性更强。


2. 单下划线 _ 用法

  • 用作占位符变量(表示不关心的值):

    name, _ = ('raymond', 42)
    
  • 在交互式解释器中,_ 保存上一个表达式结果。

🧠 注意:生产代码中用 _ 占位要谨慎,日志或调试代码里容易混淆。


3. 类型注解(Type Hints)

动态语言要靠类型提示补充可读性与安全性。

from typing import Listdef remove_invalid(items: List[int]) -> None:...

收益:

  • IDE 自动提示、补全;
  • 静态检查工具(如 mypy)发现类型错误;
  • 新同事上手快。

💡 实际经验:

  • 中大型项目必须使用类型注解(哪怕是部分添加);
  • 小脚本或原型可不加,但写公共库必须加。

4. 变量命名原则(精华)

原则说明示例
遵循 PEP8蛇形命名(snake_case),常量全大写max_value, MAX_LIMIT
描述性要强不要用 datatempresult 这类模糊词active_users, pending_id
名字要短在上下文明确时精简level3_points 而非 how_many_points_needed_for_user_level3
匹配类型名字暗示数据类型is_active, users_count, user_id
超短名要慎用除非约定俗成 (i, s, e, _)t, d, x 没意义

🧩 实践经验:

  • 命名是可读性的根基;
  • 若变量名太长说明职责不清,可通过函数封装简化;
  • 尝试先用注释描述,再提炼出最简洁的命名。

5. 一致性与作用域控制

  • 同一概念同一命名:不要 avatar_url 一会儿变成 profile_url
  • 类型一致性:不要让变量名在不同地方类型不同。

✅ 若确实需要变化,就新建变量,比如 user_list vs users_dict


6. 变量定义位置

“定义要靠近使用。”

# ❌ 坏习惯:统一放最上面
waypoints = []
photo_markers = []
...# ✅ 好习惯:逻辑块内初始化
# 初始化 waypoints 数据
waypoints = []
...
# 处理 photo_markers
photo_markers = []
...

📍 实践经验:

在长函数中靠近使用点定义变量,可以显著提升可读性和减少上下滚动。


7. 临时变量 vs 冗余变量

  • ✅ 定义临时变量能提升表达力:

    user_is_eligible = user.is_active and (user.sex == 'female' or user.level > 3)
    if user_is_eligible:user.add_coins(10000)
    
  • ❌ 但别滥用:

    # 不必要的中间变量
    user = get_user(user_id)
    trip = get_best_trip(user_id)
    return {'user': user, 'trip': trip}
    

    → 改为一行:

    return {'user': get_user(user_id), 'trip': get_best_trip(user_id)}
    

🧠 原则:变量存在的唯一理由,是让代码更好理解减少重复


🗒️ 三、注释部分(核心经验)

1. 三种常见错误

错误类型示例改进建议
屏蔽代码# old_version()❌ 直接删除,用 Git 管
复述代码# 调用 strip 去空格❌ 无价值,应说明“为什么”
接口注释写实现细节长篇讲底层逻辑仅写“功能与使用方式”

2. 注释的层次

  • 代码注释:描述代码段的意图或背景。

  • 接口注释(docstring):描述函数/类的用途、参数、返回值。

    def resize_image(image, size):"""将图片缩放到指定尺寸并返回。注意:文件 >5MB 时请用 resize_big_image()"""
    
  • 指引性注释:对代码逻辑块的简要说明(如“# 初始化 client”)。

📘 实际建议:

  • “注释说明为什么,而不是怎么做。”
  • 当函数命名能表达意图时,优先通过命名替代注释。

3. 空行也是注释

空行能分隔逻辑块,是视觉层面的“注释”:

if should_swap:numbers[i], numbers[i + 1] = numbers[i + 1], numbers[i]stop_position -= 1
return numbers

没有空行的代码读起来像“一口气没断气”。


4. 写注释的最佳时机

“先写注释,后写代码。”

原因:

  • 帮助你思考函数职责是否单一;
  • 确保不会忘记写 docstring;
  • 写注释的过程本身是设计 API 的过程

🔧 四、项目级实战建议(可落地)

场景应用建议
团队项目全面使用类型注解 + PEP8 命名规范
新功能开发函数起名 + 注释先写,逻辑后补
代码评审(Code Review)检查变量一致性、注释有效性
日常维护删除注释掉的旧代码、保持空行结构
大型函数用数据类或嵌套对象封装局部变量群
Web模板渲染明确列出变量,避免 locals()

📦 五、总结:这章在实战中的价值

主题在工程实践中的作用
命名规范提升跨人协作可读性
类型注解减少接口误用、方便静态检查
注释与空行提高理解效率、降低维护成本
一致性与精简性保证代码“整洁”与“信任感”
http://www.dtcms.com/a/484258.html

相关文章:

  • 沂南做网站上海网上推广
  • 河南省建设工程标准定额管理网站如何创建自己的app平台
  • 知名高端网站建设企业国内做设计的网站有哪些方面
  • 网站域名和空间区别重庆优化seo
  • 网站制作公司crm客户管理系统网站后台账户如何做会计分录
  • 网站关键字优化电脑做网站主机空间
  • 卫星姿轨控中的旋转矩阵:向量旋转与坐标系变换的深入解析
  • 如何找网站制作有优惠券网站 怎么做代理
  • 变量的生命周期
  • sae网站代备案免费网站制作申请
  • 安庆商务网站建设免费看视频的软件是什么
  • 推荐一个做淘客网站etherna 简洁商业企业wordpress
  • 网站制作案例如何wordpress英文站更新通知目录
  • vllm 启动的参数解释,怎么才能将显存用到极致
  • 中国建设银行公积金网站首页免费学校网站管理系统
  • 北京网站建设分析论文优惠劵网站怎么做
  • Java的api链路优化
  • 广州 做网站官方网站建设的意义
  • 网站风格介绍百度站点提交工具
  • 招标网站排名中小企业解决方案
  • 做PS的赚钱的网站自己公司网站维护
  • 邢台做网站邮箱买汽车最好的网站建设
  • 数据集打标签labelme安装及使用教程
  • 网站上传系统wordpress注册插件中文版
  • 939网站建设科技词语
  • 自己做网站需要服务器丹东公司做网站
  • 专业seo网站优化公司网站开发产品规划要求
  • 贵州省住房和城乡建设局网站首页电商小白如何做网店运营
  • HTML标签语法,基本框架
  • 昆山市建设监察大队官方网站网站开发后端论文