👋 我是 Yulia,一线 AI 应用开发工程师:4 年工程经验,在职做大模型应用落地。
只写一件事------把最新 AI 技术讲成人话 + 给你能直接跑通的代码 (全部本机实测,不搬运不注水)。
有用就点个 关注,持续更新大模型应用的前沿实战。
📚 本文是《后端开发从入门到靠谱》系列第 6 篇。第五课我们选定了主线语言 Python + FastAPI------这一篇正式开始学 Python 语法。整个系列共 20 篇,我会在关键知识点处标注 Java / Go 的对应写法,让你边学边建立"三语言对照感"。关注我,不错过后续 14 篇。
上一课我们解决了"学什么语言",这一课解决"怎么学"。网上 Python 语法教程很多,但大多是零散的知识点罗列------学了几个月,还是写不出一个完整的小项目。这篇不一样:我按写程序时的真实思考顺序 组织语法(先存数据 → 再控制流程 → 再组织代码),并且每一节都标注 Java / Go 的差别,让你从一开始就建立三语言对照感。
读完你会拿到:
- Python 全部核心语法:变量、数据类型、控制流、函数、类、异常、模块
- 一个思维模型:动态类型 vs 静态类型------三语言差异的总根源
- 每个语法点的 Java / Go 对照写法(差别一目了然)
- 一套学完就能写小脚本、为 FastAPI 和 AI 应用打底的语法体系
先看全景图,建立全局认知:
#mermaid-svg-YeojCMg9m9t7vTH2{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-YeojCMg9m9t7vTH2 .error-icon{fill:#552222;}#mermaid-svg-YeojCMg9m9t7vTH2 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YeojCMg9m9t7vTH2 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YeojCMg9m9t7vTH2 .marker.cross{stroke:#333333;}#mermaid-svg-YeojCMg9m9t7vTH2 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YeojCMg9m9t7vTH2 p{margin:0;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge{stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .section--1 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section--1 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section--1 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section--1 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section--1 text{fill:#ffffff;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth--1{stroke-width:17;}#mermaid-svg-YeojCMg9m9t7vTH2 .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-0 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-0 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-0 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-0 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-0 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-0{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-0{stroke-width:14;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-1 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-1 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-1 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-1 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-1 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-1{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-1{stroke-width:11;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 text{fill:#ffffff;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-2{stroke-width:8;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-3 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-3 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-3 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-3 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-3 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-3{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-3{stroke-width:5;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-4 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-4 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-4 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-4 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-4 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-4{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-4{stroke-width:2;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-5 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-5 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-5 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-5 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-5 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-5{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-5{stroke-width:-1;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-6 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-6 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-6 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-6 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-6 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-6{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-6{stroke-width:-4;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-7 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-7 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-7 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-7 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-7 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-7{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-7{stroke-width:-7;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-8 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-8 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-8 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-8 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-8 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-8{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-8{stroke-width:-10;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-9 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-9 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-9 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-9 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-9 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-9{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-9{stroke-width:-13;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-10 rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-10 path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-10 circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-10 polygon,#mermaid-svg-YeojCMg9m9t7vTH2 .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-10 text{fill:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .node-icon-10{font-size:40px;color:black;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .edge-depth-10{stroke-width:-16;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled circle,#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:lightgray;}#mermaid-svg-YeojCMg9m9t7vTH2 .disabled text{fill:#efefef;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-root rect,#mermaid-svg-YeojCMg9m9t7vTH2 .section-root path,#mermaid-svg-YeojCMg9m9t7vTH2 .section-root circle,#mermaid-svg-YeojCMg9m9t7vTH2 .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-YeojCMg9m9t7vTH2 .section-root text{fill:#ffffff;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-root span{color:#ffffff;}#mermaid-svg-YeojCMg9m9t7vTH2 .section-2 span{color:#ffffff;}#mermaid-svg-YeojCMg9m9t7vTH2 .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-YeojCMg9m9t7vTH2 .edge{fill:none;}#mermaid-svg-YeojCMg9m9t7vTH2 .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-YeojCMg9m9t7vTH2 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Python 语法体系
变量与类型
动态类型
数字 字符串 布尔
列表 元组 字典 集合
控制流
if 分支
for while 循环
推导式
函数
def 定义
参数与返回值
lambda 匿名函数
面向对象
class 类
继承与多态
dunder 魔法方法
异常处理
try except
模块与包
import
pip 与虚拟环境
一、先建立总思维模型:动态类型 vs 静态类型
学 Python 语法之前,必须先理解一个概念------它决定了后面所有语法的样子。
Python 是动态类型语言,Java 和 Go 是静态类型语言。 差别在哪?
python
# Python:变量没有"类型声明",赋值什么就是什么
age = 25 # 是整数
age = "二十五" # 现在变成了字符串,完全合法
java
// Java:变量必须声明类型,之后不能变
int age = 25; // 明确声明是 int
age = "二十五"; // 编译直接报错!
go
// Go:同样静态类型,但写法更简洁
age := 25 // := 自动推断类型为 int
age = "二十五" // 编译报错
一句话总结差别:静态类型(Java/Go)在"编译时"就把类型锁死,错误在写代码时就被编译器抓住;动态类型(Python)在"运行时"才检查类型,写起来灵活,但错误可能到运行时才爆出来。
这个模型能解释后面的一切:
- 为什么 Python 不需要写
int、string这些类型名(自动推断); - 为什么 Python 的同一个变量能存任何类型(运行时才知道);
- 为什么 Java/Go 代码更"啰嗦"但更"安全"(类型提前锁定)。
二、变量与数据类型
2.1 变量:直接赋值即可
Python 定义变量不需要任何关键字,直接赋值:
python
name = "Yulia" # 字符串 str
age = 25 # 整数 int
price = 19.9 # 浮点数 float
is_student = True # 布尔 bool
Java 对照 :
String name = "Yulia"; int age = 25;(类型在前,分号结尾)Go 对照 :
name := "Yulia"(冒号等号自动推断,或var name string = "Yulia")
注意两个 Python 细节:
- 语句结尾没有分号(Java/Go 都要分号);
- 代码块用缩进表示 (Java/Go 用大括号
{})。缩进是 Python 语法的核心,后面每节都会体现。
2.2 数字与字符串
python
a = 10 + 3 # 13
b = 10 / 3 # 3.3333... 除法一定得浮点数(Java/Go 的整数除法会截断!)
c = 10 // 3 # 3 整除
d = 10 % 3 # 1 取余
e = 2 ** 10 # 1024 幂运算(Java/Go 没有 ** 运算符)
s = "hello" + " " + "world" # 字符串拼接
print(f"我有 {age} 岁") # f-string 格式化,Python 最推荐的写法
Java 对照 :
10 / 3结果是3(整数除法截断),需要10.0 / 3才得浮点数------这是三语言最经典的"坑"差别。Go 对照 :同样
10 / 3 = 3;格式化用fmt.Printf("我有 %d 岁", age)。
2.3 四种容器类型:列表 / 元组 / 字典 / 集合
这是 Python 数据操作的核心,AI 开发里天天用:
python
# 列表 list:有序、可修改(对应 Java 的 ArrayList,Go 的 slice)
nums = [1, 2, 3]
nums.append(4) # [1, 2, 3, 4] 追加
nums[0] # 1 按下标访问,从 0 开始
nums[-1] # 4 负数下标 = 从末尾数,Python 特色
nums[1:3] # [2, 3] 切片:取下标 1 到 2,左闭右开
len(nums) # 4 长度
# 元组 tuple:有序、不可修改(定义后不能增删改)
point = (3, 5)
point[0] # 3
# point[0] = 9 # 报错!元组不可变
# 字典 dict:键值对(对应 Java 的 HashMap,Go 的 map)
user = {"name": "Yulia", "age": 25}
user["age"] # 25
user["city"] = "北京" # 新增键
for k, v in user.items():
print(k, v)
# 集合 set:无序、元素唯一(去重神器)
ids = {1, 2, 2, 3}
print(ids) # {1, 2, 3} 自动去重
可变 vs 不可变是 Python 的一个关键概念:
| 类型 | 可变? | 含义 |
|---|---|---|
| list / dict / set | 可变 | 创建后能改内容 |
| tuple / str / int / float / bool | 不可变 | 创建后不能改,任何"修改"都是生成新对象 |
它影响两件事:① 不可变类型可以当字典的 key({(1,2): "a"} 合法,{[1,2]: "a"} 报错);② 函数传参时,可变对象会被"原地修改"(第四节会讲这个坑)。
三、控制流:让程序会判断、会循环
3.1 if 分支
python
score = 85
if score >= 90:
print("优秀") # 注意:冒号结尾 + 缩进开始代码块
elif score >= 60: # elif = Java/Go 的 else if
print("及格")
else:
print("不及格")
Java/Go 对照 :
if (score >= 90) { ... }------条件要加括号、代码块用大括号。Python 用冒号 + 缩进替代了这两样。
3.2 for / while 循环
python
# for 循环:直接遍历容器,不需要写下标
for n in [1, 2, 3]:
print(n)
for i in range(5): # range(5) 生成 0,1,2,3,4
print(i)
# while 循环
count = 0
while count < 3:
count += 1 # Python 没有 count++ 这种写法!
# break / continue 与 Java/Go 一致
Java 对照 :
for (int i = 0; i < 5; i++) { ... }------三要素写全。Go 对照 :
for i := 0; i < 5; i++ { ... }------Go 只有 for 一种循环关键字。注意 :Python 没有
i++/++i,只有i += 1。
3.3 列表推导式:Python 最优雅的语法糖
python
squares = [x ** 2 for x in range(10)] # 0~9 的平方
evens = [x for x in range(20) if x % 2 == 0] # 带条件的过滤
这两行对应 Java/Go 里四五行的循环代码。推导式是 Python 风格的核心------AI 开发里处理数据时几乎处处用它,务必练熟。
四、函数:组织代码的第一步
4.1 定义与调用
python
def add(a, b):
"""求和(这是文档字符串)"""
return a + b
print(add(1, 2)) # 3
4.2 参数的花样
python
def greet(name, greeting="你好"): # 默认参数:不传就用默认值
print(f"{greeting},{name}")
greet("Yulia") # 你好,Yulia
greet("Yulia", greeting="早") # 关键字参数:按名字传,可乱序
greet(greeting="早", name="Yulia")
def sum_all(*args): # *args:接收任意多个位置参数,变成元组
return sum(args)
def show(**kwargs): # **kwargs:接收任意多个关键字参数,变成字典
print(kwargs)
Java 对照 :Java 没有默认参数和关键字参数(靠方法重载模拟);变长参数是
void f(int... nums)。Go 对照 :Go 同样没有默认参数/关键字参数;变长参数是
func f(nums ...int)。*args/**kwargs是 Python 独有的灵活性。
4.3 作用域与可变对象的"坑"
python
def append_to(lst, item):
lst.append(item) # lst 是可变对象,原地修改------外面也变了!
nums = [1, 2]
append_to(nums, 3)
print(nums) # [1, 2, 3] ------ 不是 [1, 2]!
这是 Python 新手必踩的坑:可变对象(list/dict)传进函数后,函数内的修改会"带出来"。理解方法:变量名只是"标签",函数内外贴的是同一个对象。
4.4 lambda 匿名函数
python
square = lambda x: x ** 2
square(5) # 25
nums = [3, 1, 2]
nums.sort(key=lambda x: -x) # 按降序排,key 接收一个函数
lambda 适合"只用一次的小函数",常和 sort、map、filter 搭配。
五、面向对象:三个语言三种哲学
面向对象(OOP)是语法里最体现"语言性格"的部分,三语言差别最大:
5.1 class 基础
python
class User:
def __init__(self, name, age): # 构造方法,self = 对象自己
self.name = name
self.age = age
def introduce(self):
print(f"我是 {self.name},{self.age} 岁")
u = User("Yulia", 25) # 创建对象:不用 new 关键字!
u.introduce()
三个关键点:
self是"对象自己"的引用,每个方法第一个参数必须写 self(Java/Go 里是隐式的 this,不用写出来);__init__是构造方法(双下划线开头结尾的方法叫 dunder / 魔法方法,Python 特色);- 创建对象直接
User(...),没有 new 关键字 (Java 要new User(...))。
5.2 继承与多态
python
class Animal:
def speak(self):
return "..."
class Dog(Animal): # 括号里写父类 = 继承
def speak(self):
return "汪汪" # 覆写父类方法
class Cat(Animal):
def speak(self):
return "喵"
for a in [Dog(), Cat()]: # 多态:同一句代码,行为随对象而变
print(a.speak()) # 汪汪 / 喵
三语言哲学对照(这一节的灵魂):
| Python | Java | Go | |
|---|---|---|---|
| 类 | 有 class | 一切皆 class | 没有 class,用 struct + 方法 |
| 继承 | 支持,鸭子类型更常用 | 单继承 + 接口 | 没有继承,用组合 + 接口 |
| 多态 | 鸭子类型:"叫起来像鸭子就是鸭子" | 接口/继承 | interface 隐式实现 |
| 访问控制 | 约定:_ 前缀表示"私有"(不强制) |
private/protected/public 关键字 | 首字母大小写决定包内外可见 |
Go 特别说明 :Go 没有类和继承,
type Dog struct { ... }+ 为类型定义方法,接口是"隐式实现"(有这个方法就算实现了接口,不用显式声明)。理解这点,学 Go 时就不会用 Java 思维硬套。
5.3 Python 的鸭子类型
python
def make_it_speak(obj):
print(obj.speak()) # 不检查 obj 是什么类型,只要有 speak 方法就能用
make_it_speak(Dog()) # 汪汪
make_it_speak(Cat()) # 喵
这就是"鸭子类型":不关心你是什么,只关心你会不会。它让 Python 代码极其灵活,代价是类型错误要到运行时才发现------第一节"动态类型"模型的直接体现。
六、异常处理:出错不崩,优雅兜底
python
try:
n = int(input("输入一个数字:"))
print(10 / n)
except ValueError:
print("你输的不是数字") # 捕获特定异常
except ZeroDivisionError:
print("不能除以 0")
except Exception as e:
print(f"其它错误:{e}") # 兜底捕获,as e 拿到异常对象
else:
print("没有异常才会执行")
finally:
print("无论是否异常都执行")
Java 对照 :
try/catch/finally,但 Java 有"受检异常"------方法签名必须声明可能抛出的异常,编译器强制处理。Python 和 Go 都没有这个强制。Go 对照 :没有 try/catch!Go 的哲学是多返回值 :
result, err := f(),靠检查if err != nil处理错误。这是学 Go 时思维转换最大的一点。
七、模块与包:复用别人写好的代码
python
import math # 导入整个模块
print(math.sqrt(16)) # 4.0
from math import sqrt # 只导入某个函数
print(sqrt(16))
import numpy as np # 起别名,社区惯例(numpy/pandas 都这么写)
arr = np.array([1, 2, 3])
# pip 安装第三方库
# pip install numpy pandas fastapi
配套概念:
- 模块 :一个
.py文件就是一个模块; - 包 :一个含
__init__.py的目录; - pip:Python 的包管理器(对应 Java 的 Maven、Go 的 go modules);
- 虚拟环境 :每个项目独立的依赖空间,
python -m venv venv创建------动手写项目前必学,否则不同项目的依赖会互相打架。
八、三语言语法差别速查表
学了这么多,最后把三语言的关键语法并排放一起,这张表建议收藏:
| 语法点 | Python | Java | Go |
|---|---|---|---|
| 变量声明 | x = 1 |
int x = 1; |
x := 1 |
| 语句结尾 | 无分号 | 分号 | 分号 |
| 代码块 | 缩进 | {} |
{} |
| 整数除法 | 10/3 → 3.33 |
10/3 → 3 |
10/3 → 3 |
| for 循环 | for i in range(5) |
for (int i=0; i<5; i++) |
for i := 0; i < 5; i++ |
| 自增 | i += 1(无 i++) |
i++ |
i++ |
| 类 | class User: |
class User {} |
无 class(struct) |
| 构造 | __init__ + self |
同名构造器 | 无(约定 NewXxx) |
| 异常 | try/except | try/catch(受检异常) | 无(多返回值 err) |
| 包管理 | pip | Maven/Gradle | go modules |
总结:一张图带走

三个立即可用的行动:
- 打开任意在线 Python 环境,把第二到七节的代码全部亲手敲一遍(语法不是看会的,是敲会的);
- 把第八节速查表存到收藏夹,学 Java/Go 的时候翻回来对照;
- 写一个 30 行以内的小脚本练手:读一个列表、过滤、排序、写进文件------检验这一课的全部语法点。
如果这篇对你有帮助,点个赞、收藏一下,下一篇对照这张速查表学 Java 会轻松很多。
关注我,这个系列共 20 篇:Python 语法 → Java 对照 → Go 对照 → 网络 → 数据库 → FastAPI 实战 → AI 应用后端架构,一路带你到能独立写生产级后端。
你在学 Python 时踩过什么坑?是 10/3 的除法,还是可变对象传参的"灵异事件"?评论区聊聊,我挨个回。
(本文语法基于 Python 3.10+ 撰写,Java 对照基于 Java 17,Go 对照基于 Go 1.21,有版本差异评论区提醒我。)