1. Python入门:Python发展史、Python应用场景、Python开发环境搭建
1.1 Python的诞生与演进
Python的故事,得从1989年的圣诞节说起。
荷兰程序员Guido van Rossum,当时在阿姆斯特丹的国家数学与计算机科学研究所工作。他嫌ABC语言太封闭,又觉得C语言写起来太累,于是决定搞一个「既优雅又实用」的新语言。说白了,就是想让写代码这件事变得舒服点。
1991年,Python 0.9.0发布。名字取自他喜欢的喜剧团体Monty Python,跟蛇没关系。嗯,虽然Logo是两条蛇,但那只是后来设计师的创意。
我刚开始学Python时,已经是2.5版本了。那时候有个经典笑话:Python 2和Python 3的战争,比任何语言都持久。你想想看,一个语言的两个大版本,居然能共存十几年,这本身就说明它的生命力有多强。
几个关键里程碑:
- 1994年:Python 1.0发布,有了lambda、map、filter这些函数式编程特性
- 2000年:Python 2.0发布,引入列表推导式和垃圾回收机制
- 2008年:Python 3.0发布,不向后兼容,引发了一场「迁徙运动」
- 2020年:Python 2正式退役,官方不再维护
我个人习惯用Python 3.8以上的版本。为什么?因为3.8引入了海象运算符:=,写起来真的很爽。不过别急,后面我们会专门讲这个。
核心观点:Python的设计哲学是「用一种方法,最好是只有一种方法来做一件事」。这跟Perl的「条条大路通罗马」完全相反。你写Python代码时,会感觉它像在逼你写出可读性高的代码。
1.2 Python到底能干什么?
这个问题,我几乎每次讲座都会被问到。其实答案很简单:除了不能生孩子,Python几乎什么都能干。
说正经的,Python的应用场景主要集中在以下几个领域:
| 领域 | 典型工具/库 | 我的实战经验 |
|---|---|---|
| Web开发 | Django, Flask, FastAPI | 我用Flask写过内部监控系统,三天上线 |
| 数据分析 | Pandas, NumPy, Matplotlib | 处理过百万行日志,Pandas一把梭 |
| 机器学习 | PyTorch, TensorFlow, Scikit-learn | GPU训练模型时,Python是标配前端 |
| 自动化运维 | Ansible, Fabric, Paramiko | 批量部署服务器,Python脚本比Shell好维护 |
| 科学计算 | SciPy, SymPy, Jupyter | 物理模拟、信号处理,Python都能搞定 |
| 游戏开发 | Pygame, Panda3D | 虽然不主流,但做原型验证很快 |
我在项目中遇到过最离谱的需求:用Python控制工业机器人。当时找了半天库,最后发现有个叫pybotics的库,直接算逆运动学。嗯,Python的生态就是这么野。
避坑指南:我曾经以为Python能搞定一切,直到我需要写一个实时音频处理程序。Python的GIL(全局解释器锁)让多线程在CPU密集型任务上表现很差。后来我改用C扩展 + Python胶水层,才解决问题。所以记住:Python适合做「胶水语言」,把C/C++模块粘起来。
1.3 搭建你的Python开发环境
好,理论说完了,咱们来点实际的。怎么把Python装到你的电脑上?
我个人习惯用pyenv管理多个Python版本。为什么?因为不同项目可能依赖不同版本的Python,你总不能每次都卸载重装吧?
但如果你是新手,我建议先走标准路线:
- 下载安装包:去python.org下载对应系统的安装包。Windows用户记得勾选「Add Python to PATH」。
- 验证安装:打开终端(CMD或PowerShell),输入
python --version。如果看到版本号,说明装好了。 - 安装pip:Python 3.4以上版本自带pip。输入
pip --version检查。 - 安装虚拟环境:
pip install virtualenv。这是必装项,后面会讲为什么。
注意:千万不要用系统自带的Python!macOS和Linux都预装了Python,但那是给系统用的。你如果直接pip install,可能会把系统搞崩。我曾经手贱在macOS上装了新版numpy,结果系统自带的脚本全挂了。从那以后,我所有项目都用虚拟环境。
说到虚拟环境,这里有个小技巧:
# 创建虚拟环境
python -m venv myproject_env
# 激活(Windows)
myproject_env\Scripts\activate
# 激活(macOS/Linux)
source myproject_env/bin/activate
# 退出
deactivate
你想想看,每个项目都有自己的依赖,互不干扰。这个习惯一定要养成,尤其是后面我们要做GPU编程,依赖管理会更复杂。
1.4 第一个Python程序
环境搭好了,咱们写个程序试试。别写Hello World了,太俗。咱们写个能体现Python特色的东西:
# 计算斐波那契数列,但用Pythonic的方式
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# 打印前10个数
print(list(fibonacci(10)))
# 输出: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
看到没?a, b = b, a + b这种写法,在C语言里你得写三行。Python就是靠这种语法糖,让你写代码像写诗一样。
关键点:Python的变量赋值是引用传递。你写a = b时,a和b指向同一个对象。这个特性在写GPU代码时特别重要——因为显存管理比内存更严格,搞不好就OOM(显存溢出)。
1.5 我推荐的学习路线
最后,分享一点个人经验。学Python,别一上来就啃官方文档。我的建议是:
- 第一周:搞懂基础语法(变量、循环、函数、列表、字典)
- 第二周:学会用pip安装第三方库,写个爬虫或者小工具
- 第三周:理解面向对象编程(类、继承、多态)
- 第四周:接触NumPy和Pandas,为后面的GPU计算打基础
记住,Python只是工具。真正值钱的是你解决问题的思路。后面我们会用Python调用CUDA,让显卡帮你算到飞起。但前提是,你得先把Python这把刀磨利了。
好,第一章就到这。下一章我们聊聊Python的数据类型和流程控制——这些东西看似基础,但写GPU代码时,一个类型错误就能让你排查半天。