前言
「学 Python 该从哪开始」这个问题,答案在 2020 年之后发生了根本变化:唯一正确的起点是 Python 3,不要再碰 Python 2。Python 2.7 已于 2020 年 1 月 1 日停止维护,官方不再发布任何补丁。网上仍有大量 2016 年前后的教程,开头就写print "hello",这类材料应当直接跳过。
另一个误解是「入门路径等于背语法」。真实的入门路径是一条反馈循环:装好解释器 → 在交互式环境里立刻看到结果 → 写出可保存运行的小脚本 → 学会读报错 → 用标准库解决一个真实的小问题。语法只是这条路上的燃料,不是终点。
本文给出一条具体、可执行、不依赖任何第三方库的入门路线,并说明每一步「怎么确认自己做对了」。
一、第一步:装对解释器
到 Python 官方网站下载页面获取安装包(Windows/macOS 用安装程序,Linux 多数发行版自带)。安装时务必勾选「Add Python to PATH」,否则命令行里敲python会找不到。
装完后用两条命令确认:
python --version
python3 --version这两个命令未必指向同一个解释器,在 macOS 和 Linux 上python甚至可能不存在(只提供python3)。更可靠的方式是在 Python 代码里读版本号:
# 适用于 Python 3 全版本
import sys
print(sys.version_info)
print(sys.executable) # 当前解释器的完整路径sys.version_info是具名元组,sys.executable告诉你「现在跑的到底是不是你想用的那个解释器」。以后装了多个版本、发现库「明明装了却 import 不到」时,这条命令就是排查起点。
二、第二步:先玩交互式解释器
直接在终端输入python(或python3)会进入交互式解释器(REPL:Read-Eval-Print Loop)。它读一行、算一行、印一行,非常适合试语法。
>>> 1 + 2
3
>>> name = "Python"
>>> len(name)
6
>>> [i * i for i in range(5)]
[0, 1, 4, 9, 16]REPL 里有两点新手最容易踩:
- 多行结构需要空行结束。写
if x:之后按回车,提示符会从>>>变成...,表示还没输完;再敲一个空行才执行。 - 粘贴多行代码容易乱。带缩进的整段代码粘进 REPL,可能因为空行被提前截断。要跑整段程序,请看下一节。
退出用exit()或按 Ctrl-D(Windows 上 Ctrl-Z 回车)。
三、第三步:写出第一个可保存的脚本
新建一个文件,名字用.py结尾,例如hello.py,内容如下:
# 适用于 Python 3 全版本
name = input("你的名字:")
print(f"你好,{name}!Python 的世界欢迎你。")
print(f"你的名字有 {len(name)} 个字符。")然后在该文件所在目录运行:
python hello.py几个关键约定,从第一天就要记住:
- 文件名扩展名必须是
.py,不要用记事本存成hello.py.txt。 - 代码里的缩进统一用 4 个空格,不要混用制表符。
input()返回的永远是字符串,要数字得用int()或float()转换。
四、第四步:学会读报错
报错不是失败,是解释器在告诉你问题在哪。Python 的报错信息要从最后一行往上看:
Traceback (most recent call last):
File "calc.py", line 4, in <module>
print(total + 1)
NameError: name 'total' is not defined- 最后一行
NameError: name 'total' is not defined是错误类型和原因。 - 往上一行的
File "calc.py", line 4是出错位置。 - 最下面那个帧才是真正出错的地方,上面的是调用链。
常见的几类入门级报错:
| 报错 | 典型原因 |
|---|
SyntaxError | 漏冒号、括号不配对、用了 Python 2 的语句 |
IndentationError | 缩进不一致 |
NameError | 变量名拼错或还没赋值就用 |
TypeError | 类型不匹配,如拿字符串和整数相加 |
ValueError | 类型对但值不对,如int("abc") |
KeyError | 字典里没有那个键 |
五、一条可执行的入门路线
按顺序走,每一步都要动手写代码,而不是只看:
- 变量与类型:
int、float、str、bool,以及type()。 - 输入输出:
print()与input(),f-string 格式化。 - 条件与循环:
if/elif/else、while、for、break、continue。 - 四个容器:
list、tuple、dict、set,以及它们的增删查改。 - 函数:定义、参数、返回值、默认参数、作用域。
- 模块与标准库:
import,先学math、random、os、json、pathlib。 - 文件读写:
open()搭配with和encoding。 - 异常处理:
try/except/else/finally,别用裸except:。 - 面向对象:类、
__init__、实例属性、方法。 - 动手项目:命令行待办清单、文件批量改名、简易爬虫(注意遵守目标站规则)。
实战:把前六步串成一个练习
下面这段是「第 1~6 步」的综合练习,只用标准库,可直接运行:
# 适用于 Python 3.8+
import random
def roll_dice(times, sides=6):
"""掷 times 次 sides 面骰子,返回每面出现的次数。"""
counts = {face: 0 for face in range(1, sides + 1)}
for _ in range(times):
counts[random.randint(1, sides)] += 1
return counts
def main():
counts = roll_dice(600)
for face in sorted(counts):
bar = "#" * counts[face]
print(f"{face}: {counts[face]:>3} {bar}")
if __name__ == "__main__":
main()它同时用到:字典推导式、for循环、函数默认参数、sorted()、f-string 的对齐格式:>3、以及if __name__ == "__main__":这个标准入口。
常见坑点
- 跟着过时教程学 Python 2 语法
❌ 照着写print "hello"、raw_input()、xrange(10)✅ Python 2.7 已于 2020-01-01 停止维护;一律用print("hello")、input()、range(10)
- 文件存成
.txt或双扩展名
❌ 用记事本另存为hello.py.txt,运行时报「找不到文件」 ✅ 确认扩展名就是.py,必要时在编辑器里手动改名
- 把整段带缩进的代码粘进 REPL
❌ 直接粘贴多行if结构,被空行提前打断 ✅ 整段程序写成.py文件再运行;REPL 只用来试一小段
python命令指向了另一个解释器
❌ 装了库却import不到,也没检查用的是谁 ✅ 运行print(sys.executable),确认解释器路径与安装pip的那个一致
- 只看不写
❌ 把教程读完就以为学会了 ✅ 每学一个语法点,立刻在 REPL 或脚本里改一改、跑一跑,制造「报错」再修好
- 不看报错就求助
❌ 只贴一句「运行不了」 ✅ 从报错最后一行读起,看清错误类型、文件名与行号,再定位
- 过早追求框架和第三方库
❌ 入门第一周就上 Web 框架、数据分析库 ✅ 先把语言本身和标准库走通,再按需求引入第三方库
- 不设置文件编码导致中文乱码
❌open("data.txt")直接读含中文的文件 ✅open("data.txt", encoding="utf-8"),跨平台始终显式指定encoding
总结
| 阶段 | 目标 | 验收方式 |
|---|
| 装环境 | 有可用的 Python 3 | print(sys.version_info)显示 3.x |
| 交互式 | 熟悉 REPL | 能试出1 + 2、列表推导式 |
| 写脚本 | 会跑.py文件 | python hello.py正常输出 |
| 读报错 | 能定位问题 | 从 Traceback 最后一行读起 |
| 学语言 | 语法与容器 | 能独立写出综合小练习 |
| 用标准库 | 解决小问题 | 不装第三方库也能完成工具脚本 |
入门路径的核心不是「读完了多少章」,而是「能不能把一个想法变成能跑起来的程序」。装好 Python 3、把 REPL 和.py脚本这两条路走顺、再练会读报错,剩下的语法与库都可以用同样的循环一步步吃下来。