乐于分享
好东西不私藏

AI大模型python3复习:2Python 基础环境与语法

AI大模型python3复习:2Python 基础环境与语法
前一篇《Python 到 FastAPI 九层进阶》把学习路线铺成了九层。这一篇只回到第一层:Python 基础环境与语法。

这不是再听一遍“变量、字符串、print()”,而是做一次工程化复盘:代码为何换台电脑就失效?三引号是不是注释?is和==为什么不能混用?

第一层的验收标准只有一句话:让数据有名字、有类型、有边界,也让代码有可以复现的运行入口。

01、先把复习目标说清楚

基础语法真正要解决的,不是“记住多少关键字”,而是建立一条稳定链路:

选定解释器 → 隔离依赖 → 写出合法语法 → 理解对象和值 → 接住外部输入 → 给出可检查的输出。

本文按这条链路复习 11 个知识点。示例以 Python 3.12 为基线,在 Python 3.13 也可运行,可直接复制复核。

02、环境和工具:先确定代码由谁执行

2.1 Python 安装、版本与环境管理

官方概念

Python 解释器负责读取并执行 Python 程序。项目环境则负责回答另一个问题:这次执行使用哪个解释器、哪些第三方包及其版本。venv会基于现有 Python 安装创建轻量级隔离环境;pyenv更适合管理多套 Python 版本;Conda 环境还能把 Python 与非 Python 依赖一起管理。

Python 3.12 与 3.13 都可作为学习基线,但项目不能只写“需要 Python 3”,应至少记录主次版本和依赖清单。

类比记忆

解释器像厨房,依赖像食材。只给菜谱不给厨房和食材清单,别人就很难复现同一道菜。

python3 --version

python3 -m venv .venv

source .venv/bin/activate

python -m pip install -r requirements.txt

示例输出:

Python 3.12.3

Windows 通常用.venv\Scripts\activate激活。多版本切换可用pyenv local 3.12.3;复杂的本地库可交给conda create -n demo python=3.12。三者解决的问题不同。

2.2 IDE 与开发工具

官方概念

IDE 不改变 Python 语言,它把解释器选择、补全、调试和测试集中到一个界面。VS Code 依靠 Python 扩展;PyCharm 强调项目级分析;Jupyter 用单元格组织代码、文字和结果。

类比记忆

IDE 像驾驶舱,解释器才是发动机。仪表盘再漂亮,选错发动机,程序仍会使用错误的包和版本。

import sys

print(sys.executable)

print(sys.version_info[:2])

示例输出:

/project/.venv/bin/python

(3, 12)

遇到“终端能运行,IDE 却报缺包”,先比较sys.executable,通常比反复安装依赖更快。

03、执行方式:交互试探,脚本沉淀

3.1 REPL、IPython 与 .py 脚本

官方概念

Python 解释器在交互模式下逐条读取、求值并输出结果,这就是 REPL。IPython 在这个基础上增加历史记录、自动补全和便捷命令。.py脚本则把语句保存为文件,适合复用、测试、评审和版本控制。

类比记忆

REPL 像草稿纸,适合验证一个想法;脚本像正式账本,负责留下可以再次执行的证据。

交互模式可先试算

>>> 7 * 6

42

确认后写入 demo.py

def answer() -> int:

return 7 * 6

print(answer())

脚本输出:

42

实用节奏是“小范围交互验证,大范围脚本固化”。只留在 Notebook 或 REPL 里的步骤难以稳定复现。

04、语法和名字:让解释器与读者得到同一意思

4.1 注释、缩进、分号与续行

官方概念

#从当前位置开始单行注释。三引号创建的是字符串字面值;放在模块、类或函数开头时,它可以成为文档字符串,但它不是 Python 的“多行注释语法”。

Python 用缩进划分代码块。PEP 8 建议每级 4 个空格。分号能把多个简单语句放到同一行,却降低可读性;长表达式优先在括号内隐式续行。

类比记忆

缩进像文章层级,决定哪句话属于哪一段。三引号像一张可能被保存下来的说明卡,不是把内容扔进废纸篓。

def describe(score: int) -> str:

"""按分数返回结果。"""

这里才是注释

if score >= 60:

return "通过"

return "继续练习"

total = (

20

+ 22

)

print(describe(total), total)

输出:

继续练习 42

4.2 变量、标识符与关键字

官方概念

赋值语句把名称绑定到对象。名称不是一个固定类型的盒子;类型属于对象,名称之后可以重新绑定。标识符可以包含 Unicode 字母、数字和下划线,但不能以数字开头,也不能使用保留关键字。普通变量和函数推荐snake_case。

类比记忆

变量名更像行李牌,不是行李箱。换一件行李,牌子可以重新挂;两个牌子也可能暂时指向同一件行李。

import keyword

course_name = "Python 基础"

score = 42

passed = score >= 60

print(score, passed)

print(keyword.iskeyword("class"))

输出:

42 False

True

像list、str这样的名称虽然不是关键字,也不宜拿来做变量名,否则会遮蔽内置对象。

05、数字、布尔与空值:先分清值的语义

5.1 int、float、complex 与 math

官方概念

Python 的内置数字类型包括整数、浮点数和复数。int支持任意精度,但仍受可用内存限制;float通常以机器双精度浮点数实现,因此很多十进制小数不能被二进制精确表示;复数写作a + bj。math模块提供实数范围内的常用数学函数。

类比记忆

整数像完整的积木块;浮点数像带刻度的量杯,刻度有限,读数可能有微小误差;复数则多了一条与实轴垂直的坐标轴。

import math

big_number = 10**50

price = 0.1 + 0.2

point = 3 + 4j

print(len(str(big_number)))

print(price)

print(point, math.sqrt(81))

输出:

51

0.30000000000000004

(3+4j) 9.0

金额等精度敏感的业务,不应直接拿浮点结果做相等判断,可进一步使用decimal.Decimal。

5.2 bool、真值判断与 None

官方概念

布尔类型只有True和False两个值,并且是整数类型的子类。条件判断会对对象执行真值测试:None、数值零和空容器通常为假,非空对象通常为真。None表示“没有值”,它是单例对象,判断时优先使用is None。

类比记忆

False是明确的否定,None是尚未提供答案;空列表则是“有一个容器,但里面暂时没有东西”。它们在条件中都可能为假,业务含义却不同。

values = [None, 0, "", [], "0", [0]]

print([bool(value) for value in values])

result = None

print(result is None)

输出:

[False, False, False, False, True, True]

True

不要用if not result代替所有缺失判断,合法的0、False或空集合也会被拦下。

06、字符串、转换与运算:把边界写明白

6.1 字符串、转义、索引与切片

官方概念

str是不可变的 Unicode 文本序列。单引号和双引号语义相同;反斜杠用于转义;原始字符串可以减少路径、正则表达式中的转义噪声。索引取得单个字符,切片按“左闭右开”范围返回新字符串,+可以连接字符串。

类比记忆

字符串像装订好的字符册:可以翻到某一页,也能复印其中几页,但不能直接替换原册中的一个字符。

title = "Python 基础"

path = r"C:\notes\python"

print(len(title))

print(title[0], title[7:], title[:6] + " 复习")

print(path)

输出:

9

P 基础 Python 复习

C:\notes\python

切片越界通常不报错,单个索引越界会触发IndexError,前者常用于截取预览文本。

6.2 显式类型转换与隐式数值转换

官方概念

int()、float()、str()、bool()会按各自规则构造目标类型。Python 不会把任意字符串自动变成数字;混合数字运算时,较窄的数字类型可能被转换为较宽类型,例如整数与浮点数相加得到浮点数。

类比记忆

类型转换像过海关:外部数据先出示原始证件,再明确换成系统认可的身份。没有检查就放行,错误会在更远处爆发。

raw_score = "95"

score = int(raw_score)

average = (score + 28) / 2

print(average)

print(bool("False"), bool(""))

输出:

61.5

True False

bool("False")为真,因为它是非空字符串。解析表单布尔值时,应约定可接受文本,不能直接调用bool()。

6.3 运算符:计算、判断与身份

官方概念

算术运算符处理数值,比较运算符产生布尔结果,and、or、not组合条件,位运算符作用于整数的二进制位,in检查成员关系,is检查对象身份。==比较值是否相等,is比较是否为同一个对象。

类比记忆

==像比较两本书内容是否相同,is像检查它们是不是同一本实体书。

left = [1, 2]

right = [1, 2]

print(7 // 3, 7 % 3, 2**5)

print(2 in left)

print(5 & 3)

print(left == right, left is right)

输出:

2 1 32

True

1

True False

除单例判断外,不要用is替代值比较。小整数或字符串偶尔能用is比对,只是实现细节。

07、输入输出:程序与外界的第一条边界

7.1 print()、input()、f-string 与 format()

官方概念

print()会把对象转换成文本并写入文本流,sep控制多个对象间的分隔符,end控制末尾内容。input()读取一行文本、去掉行尾换行并返回字符串。f-string 在字符串中计算表达式,格式说明可以控制对齐、位数等展示规则;str.format()提供另一套格式化入口。

类比记忆

input()是收件窗口,先收到的都是文本信封;类型转换负责拆封验货;print()是发件窗口,格式化规则决定标签怎么贴。

name = input("你的名字:")

raw_score = input("你的分数:")

score = float(raw_score)

print("姓名", "得分", sep="|")

print(f"{name}:{score:.1f}")

print("{}:{:.0f}".format(name, score), end="\n")

输入与输出:

你的名字:小林

你的分数:95

姓名|得分

小林:95.0

小林:95

边界处理还要考虑空输入、非法数字和业务范围。先接收字符串,再显式校验和转换。

08、三个洞见:基础语法如何长成工程能力

洞见一:环境不是个人设置,而是可执行契约

“在我机器上能跑”只证明个人环境碰巧满足条件。一个可交接的项目,至少应让版本、依赖和启动命令可以被他人读取:

.python-version 或项目说明:Python 3.12

requirements.txt / pyproject.toml:依赖及约束

README:创建环境、安装与启动命令

虚拟环境不负责记录全部依赖,依赖文件也不负责选择解释器。版本选择、环境隔离、依赖锁定是三件相互配合的事。写清它们,才是“可复现交付”。

洞见二:理解对象,要同时看值、类型与身份

许多初学问题都来自只看“打印出来是什么”,却忽略另外两层:

left = [1, 2]

right = left

copy = [1, 2]

print(left == copy)  

值相等

print(left is right)  

身份相同

print(type(left))    

类型为 list

名称绑定对象,对象拥有值、类型和身份。类型决定操作,值承载内容,身份说明两个名称是否指向同一对象。分清三者,重绑定、可变对象、None与is就容易理解。

洞见三:反馈速度与可追溯性要接力

REPL 快,脚本稳,IDE 帮你看全局,测试负责长期守门。它们不是互相替代的四种选择,而是同一条反馈链:

REPL / Notebook 验证表达式

↓

.py 脚本固化过程

↓

IDE 调试定位上下文

↓

测试与版本控制保留证据

两种偏差都要避开:只在交互窗口里试,结果无法重放;一开始就搭很重的工程,反馈又太慢。应让小验证尽快进入脚本,再逐步增加检查。

09、来源、概念索引与核心小结

权威来源与延伸材料

语言行为以 Python 官方文档和 PEP 为准,工具行为以各项目官方文档为准;中文课程适合跟练,版本有差异时回到官方定义核对。

:安装与平台配置。

:版本与安装包。

:创建、激活和隔离。

:多版本选择。

:创建、导出和恢复环境。

:解释器选择与调试。

:项目运行与调试。

:Notebook 生态。

:增强交互能力。

:交互与脚本执行。

:注释、标识符、缩进和字符串。

:缩进、命名和布局。

:表达式与赋值。

:真值、数字和序列。

:对象的身份、类型和值。

:比较、成员与身份运算。

:数学函数。

:关键字检测。

:f-string 与format()。

:参数与返回规则。

与:来自学习大纲的中文跟练材料。

极客时间《Python 核心技术与实战》:来自学习大纲的系统课程索引,适合配合官方文档复盘。

容易混淆的概念

解释器与虚拟环境

:前者执行代码,后者隔离某个解释器及其安装包;虚拟环境不是虚拟机。

注释与文档字符串

:#是注释;三引号只是字符串语法,处在约定位置时才成为文档字符串。

名称与对象

:变量名绑定对象,类型属于对象,不属于名称本身。

假值与缺失值

:0、空容器可以是假值,但不等于“未提供”;缺失语义通常用None表达。

相等与同一

:==比较值,is比较身份。

输入与类型

:input()永远先返回字符串,数值和布尔语义需要显式解析。

核心小结

把第一块内容按自上而下的思维导图展开,中心目标是:让 Python 基础代码可复现、可理解,并守住输入边界。

中心主题向下拆成四个主分支:环境与工具、执行与语法、对象与类型、运算与输入输出。

每个主分支继续落到可检查的动作:确认解释器、虚拟环境与 IDE;区分 REPL、脚本与缩进规则;看清值、类型、身份与None;最后处理类型转换、运算符和输入边界。

当这些检查项不再依赖死记硬背,第一块的知识才算真正连成一张图。

下一块将进入流程控制与函数。留一个问题:当输入可能为空、格式错误或超出范围时,你会怎样组织分支、循环和函数,让“异常路径”也清楚可读?

相关学习资料