一、学前花絮
先说个有趣的事情。昨天晚上去理发,理发师是一位老大妈。由于常常来这里理发,很熟悉了。她突然问我,你还有多少年退休?我愣了一下,心想难道说我已经这么老了吗?我说你应该是自己交社保吧?她说是的,50岁退休交了15年。说目前我已经领回来了!也就是说她自己交社保列如一共交了15万元,目前为止已经够本了。
呵呵,这种算法很有趣。我们这一代,包括下一代,都面临着延迟退休的问题。还真没计算过退休后领多少年能够本儿。突然间感觉人生实则是很实际的,哪有那么多诗与远方!
今天的文章是关于python两大版本的对比,为什么要对比呢?由于在企业级服务器(一般是linux系统)自带的python还是python2版本,而目前学习的版本是针对python3的。而且二者并不兼容!
这也是很奇葩的语言,一般情况下,一个软件产品高版本是兼容低版本的。但python就是这么任性。我们也顺便了解一下python语言的创造者,是怎样创造出这种流行语言的:
Python 的作者是 荷兰人Guido van Rossum(吉多·范罗苏姆)。1989 在圣诞节期间有了灵感。于1991年2月公开发布版本:0.9.0。Python这个名字英文原意是“蟒蛇”,而真实的由来与蛇无关。而是来源于蒙提·派森的飞行马戏团(Monty Python’s Flying Circus)
Guido 在荷兰国家数学与计算机研究中心(CWI)开发 Python,作为 ABC 语言的继任者;后历任 Google、Dropbox,2020 年退休,但仍以“终身仁慈独裁者已退位”的身份偶尔参与语言设计。
无论如何,Python语言太优秀了,得到世界太多人的喜爱。所以我们还是要致敬Guido先生。
之前的理发师的小故事,也让我们了解到这个社会上,许多人面对的是具体的现实世界。而也有那么一些人在改变世界,改变生活。
二、Python2 vs Python3 全面对比
2.1 核心区别概述
Python 2:
- 2000年发布
- 2020年已停止官方支持
- 语法和历史遗留问题较多
Python 3:
- 2008年发布
- 不向后兼容 Python 2
- 现代、简洁、安全
2.2 语法和功能区别
print函数
|
# Python 2 print “Hello World” print “No”, “comma” # 输出: No comma # Python 3 print(“Hello World”) print(“No”, “comma”) # 输出: No comma |
整数除法
|
# Python 2 print 5 / 2 # 输出: 2 (整数除法) print 5 // 2 # 输出: 2 print 5 / 2.0 # 输出: 2.5 # Python 3 print(5 / 2) # 输出: 2.5 (真除法) print(5 // 2) # 输出: 2 (整数除法) |
Unicode 处理
|
# Python 2 text = u”你好” # 需要显式声明 Unicode print type(text) # <type 'unicode'> # Python 3 text = “你好” # 所有字符串都是 Unicode print(type(text)) # <class 'str'> |
xrange vs range
|
# Python 2 for i in xrange(1000000): # 生成器,内存友善 pass for i in range(1000000): # 立即生成完整列表 pass # Python 3 for i in range(1000000): # 相当于 Python 2 的 xrange pass |
异常处理
|
# Python 2 try: # some code except Exception, e: # 逗号语法 print e # Python 3 try: # some code except Exception as e: # as 语法 print(e) |
|
输入函数# Python 2 name = raw_input(“Enter name: “) # 返回字符串 age = input(“Enter age: “) # 执行表达式 # Python 3 name = input(“Enter name: “) # 总是返回字符串 age = int(input(“Enter age: “)) # 需要显式转换 |
2.3 解释器区别
|
Python 2 解释器 # Linux/Mac python –version # Python 2.x.x python2 –version # Python 2.x.x # Windows python.exe # 一般是 Python 2 (如果安装) Python 3 解释器 # Linux/Mac python3 –version # Python 3.x.x # Windows python.exe # 一般是 Python 3 (新安装) py -3 # 明确使用 Python 3 |
2.4 环境变量设置
|
Windows 环境变量设置 方法1:通过系统属性设置 # 查看当前 Python 版本 python –version # 设置环境变量(命令行临时) set PATH=C:Python39;C:Python39Scripts;%PATH% # 永久设置需要通过系统属性: # 1. 右键”此电脑” → 属性 → 高级系统设置 # 2. 环境变量 → 系统变量 → Path # 3. 添加 Python 安装路径 方法2:使用 Python Launcher # 使用 py 命令管理多个版本 py -2 # 运行 Python 2 py -3 # 运行 Python 3 py -3.9 # 运行 Python 3.9 # 设置默认版本 py -0 # 列出已安装的 Python 版本 Linux 环境变量设置 方法1:修改 ~/.bashrc 或 ~/.bash_profile # 编辑配置文件 nano ~/.bashrc # 添加以下内容 export PATH=”/usr/local/python3/bin:$PATH” export PYTHONPATH=”/path/to/your/python/libs” # 使配置生效 source ~/.bashrc 方法2:使用 update-alternatives (Ubuntu/Debian) # 安装多个 Python 版本 sudo update-alternatives –install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives –install /usr/bin/python python /usr/bin/python3.8 2 # 切换版本 sudo update-alternatives –config python 方法3:CentOS/RHEL # 查看可用版本 yum list available python* # 安装 Python 3 yum install python3 # 创建软链接 ln -sf /usr/bin/python3 /usr/bin/python |
2.5 Python 各种版本解释
CPython
|
# 官方标准实现,使用 C 语言编写 # 最广泛使用的 Python 解释器 # 特点: # – 参考实现 # – 最好的兼容性 # – 丰富的第三方库支持 # – GIL (全局解释器锁) 限制 |
Jython
|
# 运行在 JVM 上的 Python 实现 # 特点: # – 可以与 Java 代码无缝集成 # – 可以调用 Java 类库 # – 没有 GIL # – 性能在某些场景下更好 |
IronPython
|
# .NET 平台上的 Python 实现 # 特点: # – 可以与 .NET 框架集成 # – 可以调用 C# 和其他 .NET 语言编写的库 # – 主要在 Windows 环境下使用 |
PyPy
|
# 使用 Python 编写的 Python 解释器 # 特点: # – JIT (即时编译) 编译器 # – 一般比 CPython 更快 # – 内存使用更高效 # – 兼容性稍差于 CPython |
MicroPython
|
# 为微控制器和嵌入式系统设计的 Python # 特点: # – 轻量级 # – 针对资源受限环境优化 # – 支持硬件直接操作 # – 常用于 IoT 项目 |
2.6 版本管理工具
pyenv (跨平台)
|
# 安装 pyenv curl https://pyenv.run | bash # 常用命令 pyenv install –list # 列出可安装版本 pyenv install 3.9.7 # 安装特定版本 pyenv global 3.9.7 # 设置全局版本 pyenv local 3.8.12 # 设置项目本地版本 pyenv versions # 查看已安装版本 |
conda (Anaconda/Miniconda)
|
# 创建不同 Python 版本的环境 conda create -n py27 python=2.7 conda create -n py39 python=3.9 # 切换环境 conda activate py27 conda activate py39 # 安装包 conda install numpy pandas |
virtualenv + virtualenvwrapper
|
# 创建虚拟环境 virtualenv -p python3 myenv source myenv/bin/activate # 使用 virtualenvwrapper mkvirtualenv py3_env -p python3 workon py3_env |
2.7 实际应用示例

输出如下:

2.7 迁移工具
2to3 – 自动迁移工具
|
# 检查代码需要修改的地方 2to3 your_script.py # 直接转换并生成新文件 2to3 -w your_script.py # 转换整个项目 2to3 -w your_project/ |
三、小结
本篇内容,主要是为了让大家了解python语言的整体概况,不用花费太多时间去深究版本问题。只需要知道Python2版本和3版本语法规则有很大不同,而对于当下的学习,必须是以python3版本进行。如果遇见python2版本的程序,转换为python3是有工具的。
对于Python的学习提议:
- 新项目: 一律使用 Python 3.x
- 维护项目: 思考迁移到 Python 3
- 学习: 直接学习 Python 3
- 生产环境: 使用 CPython 稳定版本
推荐版本:
- Python 3.8+ (新特性支持好)
- Python 3.9+ (性能优化好)
- Python 3.10+ (最新稳定版)
环境管理最佳实践:
- 使用 pyenv 管理多个版本
- 使用虚拟环境隔离项目依赖
- 在生产环境使用稳定版本
- 定期更新到安全支持版本
让我们保持学习热烈,多做练习。我们下期再见!

快乐男孩




