展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > Python 2 和 Python 3 差异

Python 2 和 Python 3 差异

目前Python2与Python3存在若干关键差异:print在Python2中为语句,在Python3中为函数且需加括号;整数除法在Python2中执行地板除法,Python3返回浮点数;Python2默认ASCII编码,Python3默认Unicode,字符串处理更便捷。Python2.7作为过渡版本已于2020年停止支持,Python3持续开发并获广泛

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

Python 上手很简单,而且它的写法相对直白,遇到错误能马上反馈出来——这对初学者来说特别友好。

更关键的是,Python 是一门多范式语言,它同时支持脚本式编程和面向对象等多种风格,所以能胜任各种通用任务。如今它在工业界的应用也越来越广,比如美国航天联盟(NASA 的主要航天飞机支持承包商)和工业光魔(卢卡斯影业的视觉特效和动画工作室)都在用 Python。如果你想多学一门编程语言,Python 确实潜力巨大。

Python 的开发始于 20 世纪 80 年代末,1991 年首次发布,作者是 Guido van Rossum,他至今仍活跃在社区里。最初 Python 被设计成 ABC 语言的继任者,第一个版本就已经包含了异常处理、函数和继承的类。到了 1994 年,一个重要的 Usenet 新闻组讨论论坛 comp.lang.python 成立,用户群体随之壮大,为 Python 后来成为最受欢迎的开源编程语言之一铺平了道路。

总览

在讨论 Python 2 和 Python 3 各自的机会与主要编程差异之前,我们先看看 Python 近期几个主要版本的发布背景。

Python 2

Python 2 于 2000 年末发布,这次发布让 Python 语言的开发过程比以往更加透明和包容——它引入了 PEP(Python Enhancement Proposal)机制,这是一种技术规范,既给社区成员提供信息,也描述了语言的新特性。

除此之外,Python 2 还带来了不少编程功能上的升级:循环检测垃圾收集器(自动管理内存)、增强的 Unicode 支持(标准化字符),以及基于现有列表创建列表推导式。随着 Python 2 的迭代,更多特性加了进来,比如在 Python 2.2 版本中,Python 的类型和类被统一到了一个层次结构里。

Python 3

Python 3 被视为 Python 的未来版本,也是目前正在开发的主力版本。它是一次重大改革,2008 年末发布,目标就是解决和修正之前版本遗留的设计缺陷。Python 3 的开发重点在于清理代码库、消除冗余,并且明确表示:完成给定任务,最好只有一种方法。

Python 3.0 的主要改动包括:把 print 语句改成内置函数、改进了整数除法的行为、以及提供了更强大的 Unicode 支持。

刚发布时,由于 Python 3 与 Python 2 不兼容,用户需要在两个版本之间做选择,所以采用速度比较慢。而且很多软件包库当时只支持 Python 2。不过随着 Python 3 开发团队明确宣布 Python 2 支持即将终止,越来越多的库被移植到了 Python 3。Python 3 的采用率到底增长了多少?看看目前提供 Python 3 支持的软件包数量就知道了——截至撰写本文时,360 个最受欢迎的 Python 软件包中,已有 339 个支持 Python 3。

Python 2.7

在 Python 3.0 发布之后,Python 2.7 于 2010 年 7 月 3 日发布,并计划作为 2.x 系列的最后一个版本。Python 2.7 的定位很明确:通过在 2.7 版本中提供一定程度的兼容性,让 Python 2.x 用户能更容易地把功能移植到 Python 3。这种兼容性支持包括增强的模块,比如用于测试自动化的 unittest、用于解析命令行选项的 argparse,以及 collections 中更便捷的类。

作为 Python 2 早期版本和 Python 3 之间的过渡版本,Python 2.7 凭借与许多强大库的兼容性,一直保持着非常高的人气。今天大家聊 Python 2,通常指的就是 Python 2.7,因为它是最常用的版本。

不过要注意,Python 2.7 已经被视为一种传统语言,后续的开发主要是错误修复,而且这个维护将在 2020 年彻底停止。

主要区别

虽然 Python 2.7 和 Python 3 有很多相似的功能,但千万别把它们当成完全可互换的。你当然可以在任何一个版本里写出漂亮的代码和实用的程序,但理解它们在语法和代码处理上的显著差异还是很有必要的。

下面举几个典型的例子,当然随着你继续学习 Python,你还会遇到更多语法上的不同。

打印

在 Python 2 中,print 被视为一个语句,而不是函数——这经常让人困惑,因为 Python 里很多其他操作都需要用括号传参才能执行。如果你想在 Python 2 里让控制台打印出 Sammy the Shark is my fa vorite sea creature,可以这样写:

print "Sammy the Shark is my fa vorite sea creature"

但在 Python 3 中,print() 被明确当作函数,所以同样的字符串,你要用函数的语法:

print("Sammy the Shark is my fa vorite sea creature")

这个改动让 Python 的语法更一致了,也让你在不同打印函数之间切换更顺手。方便的是,print() 的语法在 Python 2.7 中也是向后兼容的,所以你在 Python 3 里写的 print() 函数,在两个版本里都能跑。

整数除法

在 Python 2 中,任何不带小数点的数字都被视为整数(编程类型中的 int)。乍一看这挺简单,但当你把整数相除时,有时你期望得到带小数点的答案(也就是浮点数),比如:

5 / 2 = 2.5

然而在 Python 2 里,整数类型是强类型的:即使直观上应该返回浮点数,它也不会自动转换成带小数点的浮点数。当除法符号 / 两侧都是整数时,Python 2 会执行地板除法——对于商 x,返回小于或等于 x 的最大整数。所以当你写 5 / 2 时,Python 2.7 返回的是小于等于 2.5 的最大整数,也就是 2:

a = 5 / 2
print a
2

要绕过这个限制,你可以加上小数点,比如 5.0 / 2.0,就能得到预期的 2.5。

在 Python 3 中,整数除法就直观多了:

a = 5 / 2
print(a)
2.5

你仍然可以用 5.0 / 2.0 来得到 2.5,但如果你想做地板除法,现在应该用 Python 3 的 // 语法,就像这样:

b = 5 // 2
print(b)
2

这个改动让整数除法更符合直觉,但注意,它不向后兼容 Python 2.7。

Unicode 支持

当编程语言处理字符串(一系列字符)时,它需要把数字转换成字母和其他符号,而不同的处理方式会带来很大差异。

Python 2 默认使用 ASCII 字母表,所以当你输入 "Hello, Sammy!" 时,Python 2 会把它当成 ASCII 字符串。ASCII 最多只能包含几百个字符(包括各种扩展形式),对于编码非英语字符来说,这显然不够灵活。

想要使用更强大、更健壮的 Unicode 字符编码(它支持当代和历史脚本及符号集中的超过 128,000 个字符),你需要在字符串前加上 u 前缀,比如 u"Hello, Sammy!"。

Python 3 则默认使用 Unicode,这为程序员省下了额外的开发时间——你可以直接在程序中输入和显示更多字符。由于 Unicode 支持更广泛的语言字符多样性以及表情符号,把它作为默认字符编码,意味着全球范围内的移动设备都能在你的开发项目里得到良好的支持。

当然,如果你希望 Python 3 代码向后兼容 Python 2,也可以保留字符串前的 u。

持续开发

Python 3 和 Python 2 最大的区别其实不在语法上,而在于:Python 2.7 将在 2020 年停止持续支持,而 Python 3 会继续开发,不断加入新功能、修复 bug。

最近的发展包括格式化字符串字面量、更简单的自定义类创建,以及更清晰的矩阵乘法语法处理。

Python 3 的持续开发意味着开发人员可以依赖及时的问题修复,而且随着时间的推移,程序能拥有更多新功能。

其他需要考虑的要点

不管你是刚入门 Python 的新手,还是对 Python 不熟悉但有经验的程序员,都需要考虑自己学习这门语言的目标。

如果只是单纯想学习,没有具体项目,那么你大概率应该把目光投向 Python 3——它将继续得到支持和开发,而 Python 2.7 不会。

但如果你打算加入一个现有项目,那最好先摸清团队在用哪个 Python 版本,了解不同版本如何与旧代码库交互、项目使用的包在不同版本中是否受支持,以及项目的具体实施细节。

如果你打算自己起一个新项目,也值得先调查一下有哪些可用包,以及它们兼容哪个 Python 版本。正如前面提到的,虽然 Python 3 早期版本与 Python 2 库的兼容性不太好,但现在很多库已经迁移到了 Python 3,或者承诺在未来几年内完成迁移。

结论

尽管存在一些关键差异,但经过适当调整,从 Python 3 切换到 Python 2 并不算太难。而且通常情况下,你会发现 Python 2.7 可以轻松运行 Python 3 代码,尤其是你刚入门的时候。

需要记住的是:随着越来越多的开发者和社区把注意力转向 Python 3,这门语言会变得越来越精致,越来越贴合程序员不断变化的需求;而 Python 2.7 的支持则只会越来越少。

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 Python
相关文章 更多
精品专题 更多
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

Mac软件 更多
photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。