发布于2026-07-20 阅读(0)
扫一扫,手机访问
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 于 2000 年末发布,这次发布让 Python 语言的开发过程比以往更加透明和包容——它引入了 PEP(Python Enhancement Proposal)机制,这是一种技术规范,既给社区成员提供信息,也描述了语言的新特性。
除此之外,Python 2 还带来了不少编程功能上的升级:循环检测垃圾收集器(自动管理内存)、增强的 Unicode 支持(标准化字符),以及基于现有列表创建列表推导式。随着 Python 2 的迭代,更多特性加了进来,比如在 Python 2.2 版本中,Python 的类型和类被统一到了一个层次结构里。
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 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。
当编程语言处理字符串(一系列字符)时,它需要把数字转换成字母和其他符号,而不同的处理方式会带来很大差异。
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 的支持则只会越来越少。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8