🚀 01-Python 语言特性
核心目标
打破“只会写脚本”的局限,从计算机底层运行机制出发,构建 AI 工程师必备的编程底层思维,理解 Python 在算力时代的统治力。
核心目标
掌握 Python 区别于 C/C++ 的核心语言特性,精准避开开发中的类型陷阱,为后续在边缘计算与大模型部署中的性能优化打下基础。
一、 计算机语言分类深度解析
1. 编译型 vs 解释型 (运行机制)
| 特性 | 编译型语言 (如 C, Go, Rust) | 解释型语言 (如 Python, JS, PHP) |
|---|---|---|
| 代表年份 | C (1970) | Python (1990) |
| 资源消耗 | 极低 (适合 128KB 级别的嵌入式) | 较高 (适合 1GB 内存以上的架构) |
| 转换过程 | 使用 gcc 等编译器生成 .exe 或 .out | 使用 python 解释器逐行实时翻译 |
| 执行效率 | 极高,接近机器指令运行 | 中等,存在解释开销 |
| 源码保护 | 交付的是二进制文件,难以反编译 | 直接交付源码,可见性高 |
2. 类型系统:静态/动态 vs 强/弱
概念纠正
很多教材会将 Python 称为弱类型,其实是不准确的。
- Python 是动态强类型:不需要声明类型(动态),但不同类型不能乱算(强类型)。
- C 语言是静态弱类型:需要声明类型(静态),但允许某些不安全的隐式转换(弱类型)。
关键纠正:Python 是弱类型吗?
绝对不是! * Python 是【动态强类型】:变量类型灵活(动态),但严禁不同类型隐式乱算(强类型)。
- C 语言是【静态弱类型】:类型预先定死(静态),但允许危险的隐式指针转换(弱类型)。
💎 代码对比:标签 vs 盒子
1. 动态类型 (Dynamic Typing) — 以 Python 为例
在 Python 中,变量更像是一个“标签”,它可以随时贴在不同类型的对象上。
# 灵活:变量不需要声明类型,可以随时改变指向
x = 10 # 此时 x 是 int 类型
print(type(x))
x = "Hello" # 此时 x 变成了 str 类型,运行完全正常
print(type(x))
2. 静态类型 (Static Typing) — 以 C / Java 为例
// 严格:变量必须先声明类型,且类型不可更改
int x = 10;
x = "Hello"; // ❌ 编译阶段报错:无法将 const char* 赋值给 int 类型的变量
📌 点击展开:一张表看懂 Python 与 C/JS 的本质区别
| 类型象限 | 代表语言 | 典型行为 |
|---|---|---|
| 动态强类型 | Python | 1 + "2" -> ❌ 报错 |
| 动态弱类型 | JavaScript | 1 + "2" -> ✅ "12" |
| 静态强类型 | Java / Go | 编译时严格检查类型 |
| 静态弱类型 | C / C++ | 允许危险的隐式转换 |
- Python 的哲学:语法规则相对宽松(动态特性),目标是为了降低门槛,快速推广。
- 生态参考:TIOBE 编程语言排行榜 —— Python 长期稳居第一,证明了其生态的强大。
二、 编程思想的演进
1. 面向过程 (Procedure Oriented)
- 代表语言:C 语言。
- 核心工具:结构体 (struct)。
- 逻辑:将问题拆解为步骤,按照 1, 2, 3 的顺序执行。
2. 面向对象 (Object Oriented)
- 代表语言:Python, Java, Go。
- 核心思想:万物皆对象。
- 四大特性:抽象、封装、继承、多态。
对象模型公式:
类 (Class) ==> 实例 (Object)
对象.属性(它是谁?)对象.方法()(它能做什么?)
三、 开发环境补充知识
1. 什么是 bin 目录?
在 Windows 或 Linux 安装包中,经常看到 bin 文件夹。
- 含义:Binary (二进制)。
- 作用:存放可执行文件(如
python.exe)。
2. C 语言工具链
如果您在 Windows 上开发嵌入式或 C++ 扩展,通常需要安装 MinGW-w64,它是 GCC 在 Windows 上的移植版本,为 Python 提供底层编译支持。
🛠️ 2W1H 总结
- What:Python 是一门动态、强类型的面向对象解释型语言。
- Why:开发效率高、跨平台、拥有海量 AI 库。
- How:安装环境 ➔ 配置 PATH ➔ 编写第一个
.py文件。