当前位置:

首页 > 编程开发 > 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
    相关文章 更多
    PHP递归性能优化技巧与迭代替代方案
    PHP递归性能优化技巧与迭代替代方案

    解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

    Java测试中怎么使用Mockito模拟依赖对象
    Java测试中怎么使用Mockito模拟依赖对象

    详细讲解在Java单元测试中如何使用Mockito模拟依赖对象,包括引入依赖、创建Mock、打桩返回值、行为验证以及Mock与Spy的核心差异和常见陷阱排查。

    链表删除节点的时间复杂度是多少及其详细分析
    链表删除节点的时间复杂度是多少及其详细分析

    详细分析链表删除节点的时间复杂度,深入探讨单链表与双向链表在不同已知前提下的查找与删除开销,并结合完整代码与清晰图解进行对比总结。

    codex如何配置模型参数及文件设置教程
    codex如何配置模型参数及文件设置教程

    想知道如何让AI写出的代码更贴合你的习惯?本文手把手教你在VS Code中调整Codex相关模型参数,通过修改配置文件优化温度值和令牌限制,解决代码建议不准确或响应慢的问题。

    Claude Code AI编程工具实力揭秘与编程助手实测
    Claude Code AI编程工具实力揭秘与编程助手实测

    通过实测展示Claude Code在终端中如何理解自然语言指令、自动修改代码文件并处理复杂编程任务,帮助开发者评估其实际辅助能力。

    winforms教程自学入门与基础开发步骤详解
    winforms教程自学入门与基础开发步骤详解

    本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。

    Cursor自动补全设置教程教你快速开启代码补全功能
    Cursor自动补全设置教程教你快速开启代码补全功能

    详解Cursor编辑器中自动补全功能的开启与优化设置,涵盖Tab触发机制、上下文窗口调整及模型切换,帮助开发者解决补全延迟、干扰大等问题,提升编码流畅度。

    pandas的数据格式怎么转换和设置方法教程
    pandas的数据格式怎么转换和设置方法教程

    详解Pandas中数据格式转换的核心方法,包括astype强制转换、to_numeric容错处理及日期解析技巧,解决常见类型错误并提升数据处理效率。

    VS Code中文设置方法 简体语言包安装与切换教程
    VS Code中文设置方法 简体语言包安装与切换教程

    详细介绍在Visual Studio Code中安装Chinese (Simplified)语言包的方法,包括通过扩展市场搜索、安装及自动重启切换至简体中文界面的完整步骤,帮助开发者快速将编辑器本地化。

    cursor安装过程无法更改安装位置的解决方法
    cursor安装过程无法更改安装位置的解决方法

    针对Cursor安装包默认锁定C盘且无路径选择界面的问题,提供通过手动移动文件并创建目录联结(Symbolic Link)的解决方案,实现将软件安装在其他磁盘分区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

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

    Windows
    Windows

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

    macOS软件
    macOS软件

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

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

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

    Blender
    Blender
    Windows、macOS 和 Linux

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

    灵活计算器
    灵活计算器
    macOS/iOS/Android

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

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

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

    photoshop
    photoshop
    Windows、macOS 、 iPad

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

    Blender
    Blender
    Windows、macOS 和 Linux

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