Introduction
Python是一个非常易于阅读和多功能的编程语言. 由英国喜剧团体Monty Python启发的名称,这是Python开发团队的一个重要基础目标,使语言变得有趣。
由于Python是一个多范式的语言 - 也就是说,它支持多个编程风格,包括脚本和面向对象的 - 它很适合一般用途。 越来越多的组织,如联合太空联盟(NASA的主要航天飞机支持承包商)和工业光与魔术(卢卡斯菲尔姆的VFX和动画工作室)在行业中使用,Python为那些寻找一个额外的编程语言的人提供了很多潜力。
Python开发于20世纪80年代末,并于1991年首次出版,由Guido van Rossum撰写,他仍然在社区中非常活跃,被认为是ABC编程语言的继承者,Python的第一次迭代已经包括例外处理, 功能和 具有继承性的类别。
一般概述
在探讨与Python 2和Python 3相关的潜在机会之前,让我们看看最近的Python主要版本的背景。
Python 2
于2000年底发布,Python 2的语言开发过程比以前的Python版本更为透明和包容,通过PEP(Python Enhancement Proposal)的实施,这是一种技术规范,无论是向Python社区成员提供信息,还是描述了语言的新功能。
此外,Python 2还包含了更多的编程功能,包括一个循环检测垃圾收集器来自动化内存管理,增加了Unicode支持来标准化字符,以及列表理解,以创建基于现有列表的列表。
Python 3
Python 3被认为是Python的未来,是目前正在开发的语言的版本. 一个重大改造,Python 3于2008年底发布,以解决和修正该语言以前版本的内在设计缺陷。
对Python 3.0的重大修改包括将打印
陈述改为内置函数,改进整数的分布方式,并提供更多的Unicode支持。
起初,Python 3被慢慢采用,因为该语言与Python 2不相容,需要人们决定使用哪个版本的语言。此外,许多包库仅适用于Python 2,但由于Python 3背后的开发团队重申Python 2支持的终结,更多的库已被移至Python 3。
Python 2.7
2008年Python 3.0发布后,Python 2.7于2010年7月3日发布,并计划作为2.x发布的最后一个版本。Python 2.7背后的意图是让Python 2.x用户通过提供两者之间的兼容性的某种程度来更容易地将功能转移到Python 3。
由于Python 2.7作为Python 2和Python 3.0的早期迭代之间的版本的独特位置,它一直是程序员非常受欢迎的选择,因为它与许多强大的库兼容。
然而,Python 2.7 被认为是一个传统的语言,其持续开发,目前主要由错误修复组成,将在 2020 年完全停止。
关键差异
虽然Python 2.7和Python 3共享许多相似的功能,但它们不应该被认为是完全可互换的。
下面是几个例子,但你应该记住,当你继续学习Python时,你可能会遇到更多的语法差异。
在Python 2中,打印
被视为一个陈述而不是一个函数,这是一个典型的混乱区域,因为在Python中许多其他操作需要插座内部的论点来执行。
1print "Sammy the Shark is my favorite sea creature"
在Python 3中,print()
现在被明确地视为一个函数,所以要打印上面的相同字符串,你可以简单地使用函数的语法:
1print("Sammy the Shark is my favorite sea creature")
这种变化使Python的语法更加一致,并且更容易在不同的打印函数之间切换,方便地说,‘print()’语法也与Python 2.7背面兼容,因此您的Python 3‘print()’函数可以在两种版本中运行。
在Python 2中,您输入的任何数字都被视为编程类型,称为 integer. 虽然乍一看,这看起来像是处理编程类型的简单方法,但当您试图将整数分割在一起时,有时您希望得到一个数位数的答案(称为 float),如下:
15 / 2 = 2.5
然而,在Python 2中,整数被强烈打字,即使在直观意义的情况下也不会改变为十进制位置的浮动。
當分割符號 /
兩側的兩個數字都是整數時,Python 2 會 floor division 這樣,對於數量 x
返回的數字是最大的整數小於或等於 x
. 這意味著當你寫 '5 / 2' 來分割兩個數字時,Python 2.7 會返回最大的整數小於或等於 2.5,在這種情況下, ` 2:
1a = 5 / 2
2print a
1[secondary_label Output]
22
要超越这一点,您可以添加5.0 / 2.0
中的十进制位,以获得预期的答案2.5
。
在Python 3,整数分割变得更加直观,如下:
1a = 5 / 2
2print(a)
1[secondary_label Output]
22.5
您仍然可以使用5.0 / 2.0
返回2.5
,但如果你想做地板分割,你应该使用Python 3语法//
,如下:
1b = 5 // 2
2print(b)
1[secondary_label Output]
22
Python 3 中的这种修改使得通过整数进行划分变得更加直观,并且是一种与 Python 2.7 兼容的功能。
Unicode 支持
当编程语言处理 **字符串**类型 - 即字符串 - 他们可以这样做几种不同的方式,以便计算机可以将数字转换为字母和其他符号。
Python 2 默认使用 ASCII 字母,所以当您键入Hello, Sammy!
时,Python 2 会将字符串处理为 ASCII。
要使用更通用的和更强大的Unicode字符编码,它支持超过128,000个字符在当代和历史的脚本和符号集,你将不得不键入u``你好,Sammy!
,前缀u
代表Unicode。
Python 3 默认使用 Unicode,这节省了程序员额外的开发时间,你可以轻松地键入和显示更多的字符直接到你的程序. 因为 Unicode 支持更大的语言字符多样性以及表情符号的显示,使用它作为默认字符编码,确保世界各地的移动设备在你的开发项目中得到轻松的支持。
但是,如果你希望你的Python 3代码与Python 2相容,你可以把u
放在你的字符串前面。
Python 3和Python 2之间最大的区别不是语法上的区别,而是Python 2.7在2020年将失去持续的支持,Python 3将继续开发,有更多的功能和更多的错误修复。
最近的发展包括(https://andsky.com/tech/tutorials/how-to-use-string-formatters-in-python-3),更简单的定制(https://andsky.com/tech/tutorials/how-to-construct-classes-and-define-objects-in-python-3),以及处理矩阵倍增的更清洁的语法方式。
Python 3的持续发展意味着开发人员可以依赖于及时解决问题,并且随着时间的推移,程序可以更有效地构建功能。
额外点要考虑
作为一个开始Python作为一个新的程序员,或一个经验丰富的程序员新的Python语言,你会想考虑你希望在学习该语言中实现什么。
如果你只是希望在没有设置项目的情况下学习,那么你可能最想考虑的是Python 3将继续得到支持和开发,而Python 2.7不会。
但是,如果您打算加入现有项目,您可能最想看到团队正在使用的Python版本,不同的版本如何与旧代码库互动,项目使用的包是否在不同的版本中受支持,以及项目的实施细节是什么。
如果你正在开始一个你想的项目,这将是值得研究哪些软件包可用和与哪个版本的Python兼容。如上所述,虽然Python 3的早期版本与Python 2版本的库的兼容性较少,许多人已经转移到Python 3或承诺在未来四年内这样做。
Python 是一个多功能且有记录的编程语言,无论您是否选择使用 Python 2 还是 Python 3,您都将能够在令人兴奋的软件项目上工作。
虽然有几个关键差异,但通过几次调整从Python 3移动到Python 2并不难,你会发现Python 2.7可以轻松地运行Python 3代码,特别是当你开始时。
重要的是要记住,随着越来越多的开发人员和社区关注Python 3,该语言将变得更加精细和符合程序员不断发展的需求,并且对Python 2.7的支持将减少。