
1. 为什么偏偏是Python先搞清楚你将要学的东西是什么如果你这几天正琢磨着学一门编程语言那你大概率已经被Python这个名字轰炸过好几轮了。不管是朋友圈里的转行广告、B站上的免费教程还是身边某个突然会写爬虫的同事都在告诉你“Python简单、好上手、工资高”。这些话没错但有点笼统。作为一个写了好几年Python、也带过不少新人入门的从业者我想先跟你聊点实在的Python本质上到底是什么它凭什么能成为大多数人第一门编程语言的首选以及它到底适合谁。用一句话概括Python是一门解释型、面向对象、动态数据类型的通用高级编程语言。这个定义里每个词都有意义但你现在不一定要全记住。你只需要先建立两个直观的印象。第一它是“解释型”的这意味着你写好的代码不需要像C语言那样先经过一个复杂的编译过程才能运行而是由Python解释器一行一行地读取、执行边读边跑。这个过程很像你拿着一份菜谱做菜看一行、做一步而不是把整个菜谱先翻译成机器语言再一口气做完。这种特性带来的最大好处就是调试方便、反馈迅速特别适合新手——你写错了一行程序立刻告诉你错在哪一行你改完再跑就是。第二个印象是Python的语法非常接近人类的自然语言。别的语言用一堆花括号{}和分号;来界定代码块Python用的是缩进。别的语言定义一个变量可能要写清楚类型Python直接写name 张三就行。这意味着你学习Python时绝大部分精力可以花在“理解逻辑”上而不是花在“迁就编译器脾气”上。当年我教一个完全没有编程基础的文科朋友入门他第一次看到Python代码时的原话是“这不就是英语加一点格式要求吗”——这话虽然有点夸张但确实说出了Python语法亲和力强的特点。那Python能做什么呢这个问题的答案决定了你能走多远。简单来说Python的覆盖面几乎横跨整个软件领域Web后端开发用Django、Flask这类框架、数据分析与可视化用Pandas、Matplotlib、人工智能与机器学习用TensorFlow、PyTorch、自动化运维脚本、网络爬虫、办公自动化处理Excel、Word、PDF甚至游戏开发、桌面应用都有对应的成熟库。你可以不理解这些名词的细节但你只要知道一件事你几乎不可能遇到“Python做不了”的需求只会遇到“你还没学会怎么用Python做”的需求。对一个刚入门的人来说这意味着你投入的学习成本不会白费学到的每个基础概念都能在后面的实际项目里派上用场。不过我也想把丑话说在前面。Python并不是万灵丹它也有自己的短板。比如它的运行速度比C语言、Java慢不少Python的移动端开发生态比较弱你很少看到有人用Python写原生手机AppPython的全局解释器锁GIL让它在多核CPU并行计算上有限制。但这些问题对于一个刚入门、处于打基础阶段的人来说都不是你需要优先关心的。就像你刚开始学开车不需要纠结为什么这辆车的极速不如赛车你只需要先把方向盘握稳、把刹车踩明白。等你把Python基础吃透了如果你将来确实遇到了性能瓶颈那个时候你自然会有足够的基础去学习C扩展、或者其他更适合的语言。这是后话现在想太多反而容易劝退自己。那么这篇学习笔记适合谁我的定位非常明确完全零基础、之前没有系统学过任何一门编程语言的小白。如果你之前学过一点C语言或者Java但是觉得那些语言里的指针、内存管理、类继承太绕想换个更友好的语言重新开始那你也适合。如果你只是想把手头重复性的办公工作自动化比如批量改文件名、自动整理表格那Python会是你最有性价比的选择。至于已经有丰富编程经验的老手这篇文章对你来说可能太基础了你可以直接跳过初学部分去看后面的实战案例。2. Python的前世今生了解一门语言的“性格”比你以为的更重要在动手安装环境、敲第一行代码之前我想花一点篇幅聊聊Python的来历。这不是为了给你讲历史故事凑字数而是因为一门语言的诞生背景深刻影响了它的设计哲学和使用方式理解了这些底层理念你在后续学习的过程中会少走很多弯路。2.1 一个“业余时间项目”如何改变了世界Python诞生于上世纪80年代末创造者是荷兰人吉多·范罗苏姆。当时他在某研究中心工作觉得现有的编程语言要么过于复杂、要么功能不够优雅于是决定利用圣诞节假期写一个“介于C和Shell之间”的语言。注意“介于C和Shell之间”这个定位——这句话直到今天仍然是理解Python的最佳钥匙。C语言功能强大但抽象层次低你需要手动管理内存、考虑指针、处理各种底层细节就像让你直接用手工工具造一台汽车Shell脚本简单直接但不能胜任复杂的系统级开发就像让你用乐高搭房子速度快但规模一大就撑不住。Python的目标则是在这两者之间找到一个平衡点像Shell一样容易上手、像C一样功能完整。1991年Python的第一个公开发行版本发布。从那时起它经历了几个关键的版本节点。2000年发布的Python 2.0引入了垃圾回收机制和列表推导式让代码写起来更简洁2008年发布的Python 3.0是一次重大的、甚至有些“激进”的版本升级它修正了Python 2时代遗留的一些设计缺陷但代价是很多Python 2的旧代码不能直接运行在Python 3上。当时引发了社区里不小的争议很多老项目因为迁移成本高而迟迟不愿升级。但回头看Python 3的决策是正确且果断的——如果继续背着Python 2的兼容性包袱Python很难在之后的人工智能浪潮里轻装上阵。这里我希望你记住一个知识点因为它会在你后续学习时反复遇到你应该使用Python 3而不是Python 2。这不是一个可选项而是当前整个Python生态的共识。Python 2在2020年1月1日已经正式停止维护不再有任何官方安全更新和bug修复。如果你在某个教程或某本老书里看到的代码还是Python 2的写法——比如print hello这样不带括号的写法——我建议你果断放弃那个教程换一个用Python 3教学的资料。这就像考驾照时你不需要学习怎么开手动挡的老款教练车直接学自动挡新车型就好。2.2 Python的设计哲学简洁、明确、优雅Python的核心理念被浓缩在“Python之禅”The Zen of Python里。你在安装了Python之后可以在交互式解释器里输入import this来查看这段文字我强烈建议你这么做。这段文字里有几条特别值得反复品味优美胜于丑陋Beautiful is better than ugly. 明确胜于隐晦Explicit is better than implicit. 简单胜于复杂Simple is better than complex. 可读性至上Readability counts.这几句话不是空泛的口号它们直接决定了Python的很多设计细节。比如说Python要求你用缩进而不是花括号来表示代码块本质上就是强制你写出具有良好视觉结构的代码——在别的语言里你可以不缩进代码也能跑但可读性极差在Python里不缩进代码直接报错你被迫从一开始就养成好的编写习惯。再比如说Python里同一个操作往往只有一种“明显”的写法这跟Perl这种“有多种方法做同一件事”的语言截然相反。这种“单一且明显”的设计哲学让你在读别人的Python代码时不会太费劲也让团队协作时的沟通成本大大降低。理解这层哲学对你学习有什么实际帮助我举一个具体的例子。你将来写Python代码时经常会遇到“列表推导式”list comprehension——一种用一行代码生成列表的简洁写法。对于一个老手来说这个特性是Python优雅的体现但对于一个新手来说如果还没有完全理解循环的底层逻辑就直接看列表推导式反而会一头雾水。我在带新人的时候经常看到这种情况新人抄了一行列表推导式跑通了但完全不知道为什么会得到那个结果之后遇到稍微变化的需求就抓瞎。所以我的建议是在你没有亲手写过几十遍普通写法之前不要去追求那些“看起来很高级”的写法。Python的优雅是建立在扎实基础之上的锦上添花而不是空中楼阁。2.3 Python生态的“杀手锏”拿来即用的第三方库如果说语法是Python的脸面那第三方库生态就是Python的肌肉。截至今天Python官方的包管理平台PyPI上托管着超过几十万个第三方库涵盖了你能想象到的几乎所有领域。这意味着你在完成绝大多数需求时根本不需要“发明轮子”你只需要pip install一个库然后调用它的接口。打个比方你想用Python处理一批Excel文件。如果你完全从零开始写代码去解析Excel的二进制格式那可能需要花好几周时间但如果你用openpyxl或pandas这个库几行代码就能完成读取、筛选、修改、另存为等一系列操作。你可能会担心那我岂不是不就是在“调包”这样能学到东西吗我想说这种担心是完全多余的。真正的编程能力并不是什么代码都自己从零写而是知道什么东西已经有了、什么东西需要自己写、以及如何把已有的工具组合起来解决实际问题。这就像一个装修师傅他的工作不是从种树开始做木地板而是知道什么情况下用木板、什么情况下用瓷砖、怎么把它们铺得又快又好。你调用的每个库都是为你省下大量时间的“预制建材”。当然生态丰富也带来一个新手必经的坑库实在太多了不知道学哪个。给你的标准答案是——现在不用管。入门阶段你只需要用到Python自带的标准库外加最基础的几个库就够了等你知道自己具体要往哪个方向发展再去针对性地学习对应的库。比如想搞数据分析就学pandas和matplotlib想写网站就学Flask和Django。现阶段的主要矛盾是“把语言基础语法学会”而不是“把某个库学透”。3. 动手前的准备工作搭建属于你自己的Python开发环境聊完了理论我们该动真格的了。在写出第一个“Hello World”之前你还需要完成两项准备工作安装Python解释器以及选择一款趁手的代码编辑器。这两件事情看似简单但很多新手恰恰是在这一步就被各种环境问题劝退了。这里我会尽量把细节说到位你跟着一步步做就行。3.1 Python解释器的下载与安装别怕这一步没那么玄乎首先明确一个概念Python语言本身只是一套语法规则真正让代码跑起来的是一个叫“解释器”的软件。你从官网下载并安装的就是这个解释器。市面上有很多Python发行版比如Anaconda、WinPython等它们预装了大量科学计算相关的库适合数据科学方向的人群。但对于刚入门、硬盘空间又有限的朋友我更推荐安装官方原版的Python解释器轻装上阵以后缺什么库再装什么库心里有数。下载地址只有一个最权威的来源——Python的官方网站python.org请认准这个域名不要跑到其他下载站去下载来路不明的安装包。打开官网后把鼠标悬停在首页的“Downloads”菜单上网站会自动检测你的操作系统并给出对应的下载按钮。如果你是Windows系统点击那个写着“Windows installer (64-bit)”的按钮即可如果你是macOS用户Mac系统自带一个老版本的Python 2.7这个版本太老了不是我们要用的你必须去官网下载并安装最新的Python 3版本。安装过程中有几个细节需要特别留意。第一务必勾选安装器底部那个“Add Python to PATH”复选框。这个小方框决定了你的电脑能否在任意位置识别出python这个命令。很多新手装完Python后在命令行里输入python却提示“不是内部或外部命令”原因就是忘了勾选它。如果安装完成后你发现没法用也不用重装——你可以在系统环境变量的Path中手动添加Python的安装路径。但最省事的方法还是安装时就勾上一步到位。第二安装方式建议选择“Install Now”立即安装而不是“Customize installation”自定义安装。默认安装已经包含了绝大多数你需要的组件和工具自定义安装反而容易因为不清楚选项含义而漏掉某些组件。我给很多朋友远程指导安装时发现凡是后来出问题的大多数都是因为当初手动改了什么设置。第三如果你是Windows系统安装页面上可能会弹出一个关于“Disable path length limit”的提示建议你点击并允许它。Windows系统默认将文件路径长度限制在260个字符以内取消这个限制可以避免你以后在安装某些依赖库或创建深层目录结构时遇到不必要的路径错误。这个操作没有副作用放心点即可。安装完成后我们来验证一下是否成功。在Windows上按Win R组合键打开“运行”对话框输入cmd并回车打开命令行窗口在macOS上打开“终端”应用。然后在命令行里输入python --version如果你的电脑上正确安装了Python并且PATH也配置好了屏幕上会显示类似Python 3.12.4这样的版本信息。看到这个输出恭喜你你的Python环境已经就绪了。如果你输入python --version得到了“不是内部或外部命令”或command not found不要慌先检查两点一是你的Python安装包是否真的安装完成二是PATH是否配置正确。如果都无法解决一个更简单的办法是卸载后重装并且这次一定记得勾选“Add Python to PATH”。不要嫌暴力很多时候重装比排查环境变量快得多。3.2 写代码该用什么工具从Notepad到IDE的实用建议环境装好后你需要的第二个工具是“写代码的地方”。这里我要展开说说因为选对工具对你的学习体验影响巨大工具选错甚至比语言本身更让人劝退。市面上可选的有这么几类。一类是纯文本编辑器比如Windows自带的记事本、macOS的文本编辑。它们的功能就是纯文本输入没有任何代码辅助。我不建议你在入门阶段用它们因为没有语法高亮代码里关键字、变量、字符串全是一种颜色你很难一眼看出哪行写错了、哪部分格式有问题。你想象一下用没有颜色的黑白地图找路是什么体验用记事本写代码就是那个体验。第二类是专为代码而生的轻量编辑器最典型的是微软出品的Visual Studio Code简称VS Code。它是目前整个编程社区里最热门的编辑器之一免费、开源、插件生态极其丰富。VS Code本身不包含Python解释器它只是一个“编辑环境”但你给它装上Python扩展插件后它就能提供代码高亮、自动补全、运行代码、调试等功能。我的推荐是如果你追求轻量、现代、可以逐步扩展的用户体验VS Code就是你的首选。它不像一个笨重的大型IDE那样启动缓慢但又能通过插件不断升级战斗力陪着你的学习之路走得很长远。第三类是重型集成开发环境IDE最典型的是PyCharm。JetBrains出品的PyCharm专为Python开发设计开箱即用功能非常全面——代码补全、调试器、版本控制、数据库工具、测试工具全都内置好了。它的Community版本社区版是免费且够用的足够满足你入门阶段的全部需求。如果你喜欢“一个工具搞定所有事”、不想自己去折腾插件那PyCharm会给你非常省心的体验。当然它的缺点是启动速度比VS Code慢、内存占用也更高开启一个项目可能要等上十几秒但如果你电脑配置不差这也算不上缺点。那到底该选哪个我给一个直接的建议我个人的体验是VS Code更适合长期使用因为它轻、快、生态广等你以后不仅写Python还写点前端、写点Shell脚本时它都能胜任。但我也会诚实告诉你PyCharm对纯Python新手更友好因为它的交互界面把很多复杂操作都收纳成了图形化按钮你不需要理解太多背景知识就能用起来。我见过不少朋友因为VS Code的配置文件、工作区设置搞不明白而卡壳换了PyCharm之后反而顺畅了。所以我的建议是偏懒、想省心选PyCharm爱折腾、眼光放长远选VS Code。两个都不错关键是别换来换去。选好一个一直用下去比反复横跳重要得多。除此之外我还想提一种特殊的“工具”——在线交互式环境。比如Python官方提供的在线Shell、或者各种在线代码运行网站。这些网页版工具不需要安装任何东西打开浏览器就能运行Python代码和新手练习。它们的适用场景是你人还在犹豫要不要长期学Python或者只是临时想跑一小段代码验证一下想法。但对于系统性的学习和以后写稍微长一点的程序在线环境就非常不便了——上传下载文件麻烦、网络波动影响体验、无法保存项目结构。所以我建议你把在线环境当作一个应急用的辅助工具真正的主战场还是本地安装的Python加编辑器。3.3 两种运行方式的理解交互式窗口和脚本文件在正式编写第一个程序之前你还需要理解Python的两种运行方式因为后者会让你困惑的“为什么代码不执行”现象豁然开朗。第一种方式是交互式解释器也就是你打开命令行输入python并回车进入一个带有提示符的环境。在这个环境里你输入一行代码解释器立刻执行一行并返回结果。比如你输入1 1然后回车屏幕上立刻显示2。这种方式的优点是即时反馈非常适合做简单的计算测试、实验某个函数的用法。我至今仍然经常打开交互式解释器验证一个API的返回值格式。但它的局限是代码不会保存你关掉窗口后刚才输入的所有东西就消失了无法复现。第二种方式是脚本文件运行也就是你把代码写在一个后缀为.py的文本文件里然后通过命令python 文件名.py一次性运行整个文件。绝大多数实际项目都是以这种方式工作的。脚本文件的典型特点是可以反复运行、方便修改维护、可以交给别人运行。我们需要建立一种直觉平时写代码和学习主要工作在脚本文件上偶尔想要快速验证一个想法再打开交互式窗口。很多新手的迷惑是我在交互式窗口里定义了变量关掉窗口重新打开变量怎么不见了答案很简单——交互式窗口里的每行代码执行后是临时存在内存里的关闭即销毁。没有保存到文件中自然不复存在。我们的第一个程序将以脚本文件的方式编写和运行这也是最符合真实开发流程的方式。4. 第一个程序全流程实操从新建文件到跑出“Hello World”好所有准备工作都就绪了。这一节我们正式来写第一个程序。我会把从新建文件到运行成功的每一步都拆得很细你跟着操作大概率不会出问题。如果你在过程中遇到了报错别慌——下一节我会专门整理一份新手常见报错排查手册供你对照。4.1 步骤一新建Python文件打开你的编辑器以VS Code为例点击左侧的“文件”菜单选择“新建文件”。然后在新建的空白文件编辑区中我们需要把这个文件以.py后缀保存。可以点击快捷键Ctrl SWindows或Cmd SmacOS调出保存对话框在文件名一栏输入hello_world.py。这里我特意用了下划线而不是连字符或空格来连接单词这是Python文件命名的通行习惯——文件名只能由字母、数字、下划线组成且最好不要以数字开头。hello_world.py就是一个非常标准、规范的Python文件名。保存位置也有讲究。我建议你在电脑上专门新建一个文件夹比如E:\PythonCodeWindows或~/PythonCodemacOS用来存放你学习过程中的所有代码文件。不要随手存到桌面或者“下载”文件夹里不然学上两周你的代码文件满桌面乱飞到时候想找个以前的代码都困难。项目管理从一开始就建立好习惯后面会受益无穷。哪怕你现在只写了几个文件养成习惯总是没错的。4.2 步骤二输入代码在空白的编辑区里输入下面这一行代码print(Hello, World!)输入时请务必使用英文输入法因为Python所有语法符号括号、逗号、引号、句点都是半角的英文符号。如果你正在用中文输入法位于中文输入法状态下的括号和引号是全角形式、“”Python解释器是不认全角符号的你看上去可能没什么区别但解释器会直接报语法错误SyntaxError。这是新手极其容易犯的一个错误我当年教过的一个学生因为引号的问题卡了整整一晚上检查了无数次也没发现是输入法的问题。所以我在这里格外强调写完代码后可以低头看一眼输入法状态栏确保它是英文模式。后面等你熟练了就不需要这么在意了因为看一眼代码高亮颜色基本就能发现问题——在大多数编辑器里合法字符串会显示成特殊的颜色如果你代码里出现了中文引号颜色通常不正常。print这个单词是Python的内置函数作用是“输出内容到屏幕”。括号里的内容就是你要输出的信息。Hello, World!是一段字符串——所谓字符串就是被单引号或双引号包裹的一串文本。Python里单引号和双引号都可以用来表示字符串只要成对匹配就行。我建议你从开始就养成用双引号的习惯并非双引号比单引号更高级而是双引号在你的代码中出现次数更多、团队里也更常见保持风格统一有利于协作阅读。字符串后面的感叹号是你在屏幕上要输出的内容的一部分所以也要放在引号里面如果放在引号外面解释器会认为它是一个变量名从而报错。这个细节是初学者常踩的坑之一。4.3 步骤三运行你的程序保存好文件后我们就可以运行它了。如果你用的是VS Code可以点击编辑器右上角的“运行”按钮一个类似三角箭头的图标或者直接在集成终端中执行命令。我个人更推荐你养成用命令行的习惯因为这也是程序员的基本功。打开终端VS Code里可以通过“终端”菜单打开内置终端确保当前目录是你的文件所在目录然后输入python hello_world.py按下回车键如果一切顺利屏幕上会显示Hello, World!看到这行字的瞬间你的Python学习之旅就正式开始了。这背后的流程可以总结为你写的代码是源代码告诉解释器“请在屏幕上输出Hello, World!”Python解释器读取你的代码理解你的指令执行指令并调用系统资源在屏幕上输出。你会觉得这很基本是的很基本但任何复杂的程序——人工智能、大数据平台、大型网站——本质上都是无数个这样基础的指令组合而成。你现在踏出的这一步和所有程序员当年迈出的第一步没有什么不同。4.4 把第一个程序改出花样理解变量的概念仅仅输出一个Hello, World!说实话有点不过瘾。我们来玩点更有意思的——引入变量的概念。在交互式窗口或者脚本文件里输入以下代码greeting Hello, World! print(greeting)这里的greeting就是一个变量它的名字叫greeting它的值是一个字符串Hello, World!。第一行代码做的事情是“把Hello, World!这个字符串赋值给名为greeting的变量”第二行代码做的事情是“把greeting变量的值输出到屏幕上”。运行这段代码你会看到和之前完全相同的结果Hello, World!。那你可能会问既然能直接输出为什么要多此一举用变量这个问题的答案正是理解编程思维的关键。直接输出字符串是硬编码用变量存储是让程序有了“记忆”。在真实的项目中程序的输入是动态的——用户的名字、商品的价格、传感器的温度——这些数据随着程序的运行而不断变化你不能把它们写死在代码里必须用变量来承接。变量就像是一个带标签的盒子标签是变量名盒子里的东西是变量的值。你可以随时查看盒子里装了什么也可以随时把里面的东西换成新的。我们接着扩展。在文件中输入name 小明 age 18 height 1.75 print(我叫, name) print(今年, age, 岁) print(身高, height, 米)这段代码里出现了三种常见的数据类型字符串小明、整数18、浮点数1.75。Python会根据你赋值的内容自动推断变量的类型不需要你显式声明。每行print里的逗号表示输出多个内容时用空格隔开。运行后你会看到我叫 小明 今年 18 岁 身高 1.75 米看到输出结果的那一刻你应该已经体会到编程的一点乐趣了——同一个变量你随时可以改变它的值让程序产生不同的输出。比如把age 18改成age 28再重新运行程序输出的年龄就会跟着变化。这个看似简单的实验会让你理解什么是“数据驱动逻辑”明白变量为什么是程序中最基础也最重要的概念。4.5 第一个程序里的规范养成注释与命名很多新手在学第一课的时候急着学更高级的语法而往往会忽略两个看似微不足道、实则影响深远的“软件规范”注释和命名。注释是代码中供人阅读、但不被解释器执行的文字。在Python中你可以用井号#来添加单行注释或者用三引号 来添加多行注释。比如# 这是一个输出问候语的程序 print(Hello, World!) 下面是程序的说明 - 作者某某 - 功能打印问候语 - 日期2025-01-01 为什么要写注释因为代码是给计算机看的注释是给未来的自己和其他人看的。我见过太多初学者写完一段代码过了一个月再回来看时完全看不懂当初的思路。给代码加上注释就像给未来的自己留一张便签。这个小习惯现在看起来可有可无但等你开始写几十上百行代码时就会变成必需品。以后我们会学到更多复杂语法到那个时候注释习惯的差异会直接造成“维护代码像读天书”和“维护代码像翻日记”的天壤之别。命名也很讲究。你给变量起名字时应选择有意义、能表达其内容的词比如用user_name而不是a、b。Python社区通用的命名风格是小写字母加下划线也就是所谓的Snake Case蛇形命名法。比如上面例子中把greeting改成greeting_message更好地说明了它存的内容是一个消息字符串。遵循社区的风格可以减少团队协作的摩擦也能让你自己的代码看起来更专业。第一步就养成好习惯比以后花大力气纠正要容易得多。5. 新手第一周高频踩坑实录这些问题你很可能也会遇到我在带新人学习Python的时候总结过一份“新手第一周高频问题清单”。这里挑出几个最有代表性的连同解决思路一起整理给你希望你能少走弯路。5.1 “不是内部或外部命令” / “command not found”这是环境配置阶段出现频率最高的报错。你明明安装好了Python输入python --version却提示找不到命令。绝大多数是因为安装时没有勾选“Add Python to PATH”添加Python到环境变量。解决方法是Windows按Win R打开“运行”输入sysdm.cpl在“高级”选项卡中找到“环境变量”在“系统变量”下的Path变量中检查是否存在Python安装目录和Scripts子目录。如果没有点击“新建”添加Python的安装路径。但前面说过最省心的方式是卸载重装并勾选那个复选框。macOS用户则需要检查是否安装了官方Python 3而不是使用系统自带的旧版本。5.2 “SyntaxError: invalid character ”或者中英文符号引起的问题这个报错的意思是“语法错误无效字符”。最常见的原因是你在代码中使用了全角符号尤其全角括号和全角引号“”。Python的语言解析器只能识别ASCII码范围内的半角符号即(和)和一旦遇到全角符号就直接给你脸色看。解决方法是检查当前输入法状态确保是英文输入模式把代码里所有全角符号替换成半角符号。这里有个小技巧如果你用的编辑器支持代码高亮全角字符串通常会高亮全角符号不在高亮区域内高亮区域会有异常断层你一眼就能认出来。5.3 “IndentationError: expected an indented block”这个报错的大致意思是“期望一个缩进块但没找到”。Python非常依赖缩进来组织代码层级——一个if语句、一个for循环的下一行必须有缩进通常是四个空格否则解释器不知道该把哪些代码当作这个逻辑块的内容。解决方法是检查代码中是否有需要缩进但没有缩进的地方。另一个相关问题是在同一段代码里混用了空格和Tab键来缩进这在Python里会引发TabError。解决方法是统一使用空格——绝大多数现代编辑器都默认把Tab键转换为四个空格你不需要太操心如果你是从别处复制代码要格外小心混用的情况。在VS Code里你可以通过在命令面板Ctrl Shift P中搜索“Convert Indentation to Spaces”将缩进转换为空格来统一处理。5.4 “NameError: name xxx is not defined”这个报错的意思是“名字xxx未定义”。最常见的原因有两个一是变量名拼写不一致——你在定义时写的是user_name使用时就写成了username两个名字根本不同解释器自然找不到二是你确实没有定义这个变量就尝试使用比如你写了print(greeting)但前面的代码里压根没有greeting Hello, World!这行。解决了这个报错你就同时学会了编程里的一个重要原则所有的变量必须先定义赋值后使用。就像你在查成语词典之前必须先要把成语写下来一样。5.5 “ModuleNotFoundError: No module named xxx’”当你尝试import一个第三方库但该库不在当前环境中时会遇到这个报错。最常见的原因是库没有安装或者安装到了另一个Python环境中。在命令行中执行pip install 库名可以安装缺失的库。如果确认安装了但依然报错那大概率是“装到了另一个Python环境”——你之前可能装了Anaconda又装了官方Python导致命令行里运行的Python和pip安装库的Python不是同一个。这个问题的排查比较啰嗦但对于入门阶段我建议你只保留一个Python环境其他的卸载干净等以后学会了虚拟环境管理再玩多环境现阶段别给自己挖坑。5.6 我运行的代码没有报错但也没有输出有时候你运行一个脚本一切都正常但屏幕上什么也没有。很可能是因为你只定义了变量但没有调用print()把结果输出出来。比如你写了result 1 1但没有print(result)。程序确实执行了计算但结果只是保存在内存里没有呈现到屏幕上。“在计算机中运行成功”和“在屏幕上看到结果”是两回事。如果想要看到输出必须用print显式打印出来。这是初学阶段很容易踩的认知偏差记住就好。下表总结一下上面这些报错的典型特征和快速应对方式报错类型典型信息关键词最常见原因快速应对思路环境配置错误不是内部或外部命令 / command not foundPATH未配置正确重装并勾选Add Python to PATH语法错误SyntaxError: invalid character中英文符号混用切换英文输入法重输代码缩进错误IndentationError / TabError缩进缺失或混用空格与Tab统一使用四个空格名称错误NameError: xxx is not defined变量未定义或拼写不一致检查变量拼写顺序模块缺失ModuleNotFoundError: No module named xxx库未安装或环境错乱检查pip安装及Python环境有输出预期但没有输出无报错但屏幕空白缺少print打印语句在变量后添加print6. 从“读了这篇笔记”到“真的会写代码”给新手的行动路线建议看完上面这些内容你可能会感觉知识点有点多有点“信息过载”。这很正常任何一种新技能的入门阶段都会有一段时间的“消化不良期”。但请放心你不需要一次全记住你只需要动手敲一遍让手指和大脑一起经历一遍这些步骤很多知识就会自动内化。编程本质上是一门“手艺活”和游泳、骑自行车、炒菜一样——你光看教程是不可能学会的必须亲自上手。我给你一条非常具体的行动路线你可以按照这个节奏来安排自己的入门期学习。第一周目标是“能写、能跑、能看懂”。每天花30到60分钟在本地环境里反复编写和运行上面这种最简单的代码。你可以尝试改改变量名、换换字符串内容、多打印几行输出感受一下“改代码-保存-运行-看结果”这个闭环。记住这个循环才是编程学习的核心动作而不是不停地刷教程视频。看视频时你觉得什么都懂了一关视频自己写就脑袋空白——这几乎是每个新手的通病唯一的解药就是亲手敲。不需要多每天敲几次持续一周你的陌生感就会消退大半。第二周目标是掌握核心基础语法。在能熟练运行Hello World这类小程序之后你可以开始接触Python的基础语法块数据类型整数、浮点数、字符串、布尔值、运算符加减乘除、比较、逻辑、条件判断if / elif / else、循环for和while、列表和字典这两种常用的容器类型。这一周的知识量会明显上一个台阶但每个概念都有清晰的学习路径——找一个靠谱的入门教程或者一本经典的入门书按章节顺序学每学完一个章节就自己写代码验证。第三周到第四周目标是开始写“解决问题的程序”。到这里你应该尝试用学过的语法写一些有实际作用的小工具比如一个计算BMI指数的脚本一个根据输入时间输出问候语的程序一个把列表里大于某个数的元素筛选出来的练习。这些练习不需要用到什么高深的库只需要用到基础语法和简单的逻辑。写到这一步你已经真正体验到“程序是为了解决实际问题而存在”的感觉而不再只在练习题里打转。我自己带过的学生里最快的一个在两周内就写出了能用的文件批量重命名小工具。他之前完全没有编程基础靠的就是“每天敲一遍遇到报错不着急查资料先自己看”的习惯。我想这也说明了Python入门并不难难的是持续动手。方法都是现成的关键在于你是否愿意每天花那半小时。7. 关于这门语言我还想跟你说几句掏心窝的话到了这里你已经了解了Python是什么、怎么安装环境、怎么写出第一个程序、遇到问题怎么排查。作为一篇学习笔记到这里该说的技术内容已经说得差不多了。但我还想以一个过来人的身份跟你分享几点可能对你有帮助的个人体会。我在刚学Python的那段时间也经历过许多挫败时刻。印象最深的一次是我照着网上的教程写一个简单的判断年龄的程序怎么跑怎么报错报错信息全是看不懂的英文。当时刚接触编程不知道什么是“语法错误”不知道什么是“缩进”只知道屏幕上红通通一片心都凉了半截。后来我才明白报错其实是程序在用另一种方式“说话”。它不是敌人而是你的调试器——它精确地告诉你哪一行出了问题、是什么样的类型。看到红色的报错不要慌也不要第一反应去网上搜“怎么解决”而是先自己读一遍报错信息看看它说的到底是哪个文件、哪一行、什么类型的错误。这种“先自己看再动手查”的排查顺序是我后来写代码效率提高的重要原因。还有一点体会是关于心态的。“从入门到第一个程序”最重要的不是第一个程序本身而是你在这个过程中建立起来的学习方式。你会第一次体验“创造”的感觉——把你脑海中的想法转译成代码再由计算机执行出结果。这种体验会带给你正反馈而正反馈是最好的老师。在往后更长的学习路上你还需要建立“遇到问题能自己查文档、自己试错、自己总结”的能力而你现在迈出的这一小步正是这种能力的起点。最后分享一个小技巧把你自己的学习过程也记录下来。哪怕只是简单记录“今天我学会了用print输出、搞懂了变量”过了几周之后回看你会惊讶于自己已经走了多远。这是很多新手容易忽视、但真的很有用的动力来源。下一节笔记我们会进入语法基础模块从数据类型、变量赋值、条件判断这些构成程序的“积木”开始搭起。你可以先在环境里把今天的代码多跑几遍熟悉手感我们下一篇见。