Python学习【31】:Python2 vs Python3 全面对比

内容分享3小时前发布
0 0 0

一、学前花絮

先说个有趣的事情。昨天晚上去理发,理发师是一位老大妈。由于常常来这里理发,很熟悉了。她突然问我,你还有多少年退休?我愣了一下,心想难道说我已经这么老了吗?我说你应该是自己交社保吧?她说是的,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 实际应用示例

Python学习【31】:Python2 vs Python3 全面对比

输出如下:

Python学习【31】:Python2 vs Python3 全面对比

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 管理多个版本
  • 使用虚拟环境隔离项目依赖
  • 在生产环境使用稳定版本
  • 定期更新到安全支持版本

让我们保持学习热烈,多做练习。我们下期再见!

Python学习【31】:Python2 vs Python3 全面对比

快乐男孩

© 版权声明

相关文章

暂无评论

none
暂无评论...