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,你总不能每次都卸载重装吧?

但如果你是新手,我建议先走标准路线:

  1. 下载安装包:去python.org下载对应系统的安装包。Windows用户记得勾选「Add Python to PATH」。
  2. 验证安装:打开终端(CMD或PowerShell),输入python --version。如果看到版本号,说明装好了。
  3. 安装pip:Python 3.4以上版本自带pip。输入pip --version检查。
  4. 安装虚拟环境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代码时,一个类型错误就能让你排查半天。