🐸 青蛙编程网
首页 / 开发工具 / PyCharm / 4. 编辑与重构

编辑与重构

这是什么:PyCharm 最值钱的部分——懂整个项目的补全、检查与重构。不是「打字快」,是「改得动」:函数改名,全项目几十处调用一次到位。

为什么用:脚本写完只是开始,改需求才是日常。没有重构工具,改名靠搜索替换,容易漏、容易误伤;有了它,改名、提取函数都由 IDE 保证一致性。

如何用:从一个会算平均分的小程序开始,把补全、快速修复、重命名各按一遍。

智能补全:按类型给建议

def average(nums: list[float]) -> float:
    return sum(nums) / len(nums)


scores = [88, 92, 79]
print(f"平均分:{average(scores):.1f}")

输出:

平均分:86.3
操作 快捷键 体验
基本补全 Ctrl+空格 输入 ave 弹出 average,带签名与类型提示
类型感知 自动 scores. 之后只弹 list 有的方法,dict 的不会混进来
参数提示 Ctrl+P 光标在括号里按,显示每个参数
快速看文档 Ctrl+Q 悬停/按下弹函数说明

类型标注(list[float]、-> float)不是装饰:PyCharm 靠它把补全从「猜」变「准」——这是面向对象之前就该养成的习惯。

Alt+Enter:看见红线就按它

红色波浪线 = PyCharm 认为有问题。光标放到红线上按 Alt+Enter,它会直接给出修法:

  • 名字拼错(avrage):弹「重命名为 average?」——做一次真重命名,不是改字符
  • 忘了导入:自动补 import 一行
  • 未使用的变量/类型不对:给一键修复或安全删除

红线不可怕,可怕的是无视它。养成本能:出红线 → Alt+Enter → 回车。

Shift+F6:重命名是重构,不是替换

把 average 改名为 mean:光标放函数名上按 Shift+F6,输入新名字回车——定义与所有调用点一起变。它不是文本替换:同名但无关的变量、注释里恰好出现的词都不会被误伤。

同门兄弟:

快捷键 重构 干什么
Shift+F6 重命名 变量/函数/文件全局改名
Ctrl+Alt+V 提取变量 把表达式抽成变量并命名
Ctrl+Alt+M 提取方法 把选中代码抽成函数
F6 移动 挪文件自动改所有 import

Live Templates 与格式化

  • main + Tab:自动展开 if __name__ == '__main__':——最高频模板;Ctrl+J 可呼出全部模板列表
  • Ctrl+Alt+L:按 PEP 8 格式化整个文件——缩进、空行、空格全理顺,从此不纠结格式
  • Ctrl+/:注释/取消注释选中行

记忆口诀:红线就按 Alt+Enter,改名 Shift+F6 全局到;main 回车出骨架,保存之前 Ctrl+Alt+L。

❓ 常见问题

Q1:Ctrl+空格 按了没反应?

Windows 上大概率被输入法切换占用了。不用抢:输入时补全会自动弹出;非要手动呼出,到 设置 → 键盘映射 里改 Basic Completion 的快捷键。

Q2:重构后 git 里改动一大片?

正常且健康:重构改动是机械一致的小改动,code review 时一眼扫过。把「重构」与「改功能」分开提交更清晰。

Q3:没有红线但运行报错?

静态检查不是万能,运行时才确定的错误它测不到——该调试器上场了。

📝 本章小结

  • 补全按类型给建议,类型标注越全补全越准
  • 红线 → Alt+Enter:快速修复是 PyCharm 的日常
  • Shift+F6 是语义级重命名,全项目一致、不误伤
  • main+Tab、Ctrl+Alt+L 格式化,两个习惯用一辈子

动手改

  1. 把本章代码敲进项目(感受补全),故意把 average 打成 avrage,用 Alt+Enter 修好
  2. Shift+F6 把 scores 改名 raw_scores,再 Ctrl+Z 撤销——重构可以大胆试错
  3. 新建文件试试 main+Tab,然后 Ctrl+Alt+L 格式化一遍

上一章:第一个项目与解释器 · 下一章:运行与调试 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。