Python发展史+python 2 or 3区别

Python发展史 

  • 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。
  • 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
  • Granddaddy of Python web frameworks, Zope 1 was released in 1999
  • Python 1.0 - January 1994 增加了 lambdamapfilter and reduce.
  • Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础
  • Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生
  • Python 2.5 - September 19, 2006
  • Python 2.6 - October 1, 2008
  • Python 2.7 - July 3, 2010
  • In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
  • Python 3.0 - December 3, 2008
  • Python 3.1 - June 27, 2009
  • Python 3.2 - February 20, 2011
  • Python 3.3 - September 29, 2012
  • Python 3.4 - March 16, 2014
  • Python 3.5 - September 13, 2015

Python 2 or 3区别

有道翻译:总之:Python 2.x是遗产,python3。x是语言的现在和未来

Python 3.0于2008年发布。最后的2。x版2.7于2010年年中发布,声明如下

对这个生命结束版本的扩展支持的2.在此之后,x分支将不会看到新的主要版本3.x是在积极的开发中,已经经历了五年多的稳定发布,包括2012年的3.3版,3.4 2014年,3.5 2015年。这意味着,例如,所有最近的标准库改进都只是Python 3.x中默认可用。

 Guido van Rossum (Python语言的最初创造者)决定清理Python 2。正确地说,与2中的新版本相比,x更少考虑向后兼容性。x范围。最显著的改进是更好的Unicode支持(默认情况下所有文本字符串都是Unicode)以及更合理的字节/Unicode分离。

 除此之外,几个方面的核心语言(如打印和执行语句,整数使用地板部门)已经调整为新手更容易学习和更符合其他的语言,已被删除老的繁琐(例如,所有类现在新型“范围()返回一个内存高效iterable,不像在2. x)列表。

py2与3的详细区别

PRINT IS A FUNCTION  

打印是一个函数

The statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old statement (PEP 3105). Examples: 

该语句已被print()函数替换,并使用关键字参数替换旧语句(PEP 3105)的大部分特殊语法。例子:

You can also customize the separator between items, e.g.: 你也可以自定义项目之间的分隔符,例如:

1
print("There are <"2**32"> possibilities!", sep="")

还可以这样玩: (A,*REST,B)=RANGE(5)

1
2
3
4
<strong>>>> a,*rest,b = range(5)
>>> a,rest,b
(0, [123], 4)
</strong>

某些库改名了

 

Old Name

New Name

_winreg

winreg

ConfigParser

configparser

copy_reg

copyreg

Queue

queue

SocketServer

socketserver

markupbase

_markupbase

repr

reprlib

test.test_support

test.support

  

还有谁不支持PYTHON3?

目前还不支持Python 3的一个流行模块是Twisted(用于网络和其他应用程序)。大多数

积极维护的库让人们致力于3。x的支持。对于一些库来说,它比

其他:例如,Twisted主要专注于生产服务器,支持旧版本的

Python很重要,更不用说支持对该语言进行重大更改的新版本了。(扭曲

一个主要包的主要示例,其中移植到3。x绝不是平凡的

 

先说python2

  1. py2里默认编码是ascii
  2. 文件开头那个编码声明是告诉解释这个代码的程序 以什么编码格式 把这段代码读入到内存,因为到了内存里,这段代码其实是以bytes二进制格式存的,不过即使是2进制流,也可以按不同的编码格式转成2进制流,你懂么?
  3. 如果在文件头声明了#_*_coding:utf-8*_,就可以写中文了, 不声明的话,python在处理这段代码时按ascii,显然会出错, 加了这个声明后,里面的代码就全是utf-8格式了
  4. 在有#_*_coding:utf-8*_的情况下,你在声明变量如果写成name=u"大保健",那这个字符就是unicode格式,不加这个u,那你声明的字符串就是utf-8格式
  5. utf-8 to gbk怎么转,utf8先decode成unicode,再encode成gbk

再说python3

  1. py3里默认文件编码就是utf-8,所以可以直接写中文,也不需要文件头声明编码了,干的漂亮
  2. 你声明的变量默认是unicode编码,不是utf-8, 因为默认即是unicode了(不像在py2里,你想直接声明成unicode还得在变量前加个u), 此时你想转成gbk的话,直接your_str.encode("gbk")即可以
  3. 但py3里,你在your_str.encode("gbk")时,感觉好像还加了一个动作,就是就是encode的数据变成了bytes里,我擦,这是怎么个情况,因为在py3里,str and bytes做了明确的区分,你可以理解为bytes就是2进制流,你会说,我看到的不是010101这样的2进制呀, 那是因为python为了让你能对数据进行操作而在内存级别又帮你做了一层封装,否则让你直接看到一堆2进制,你能看出哪个字符对应哪段2进制么?什么?自己换算,得了吧,你连超过2位数的数字加减运算都费劲,还还是省省心吧。  
  4. 那你说,在py2里好像也有bytes呀,是的,不过py2里的bytes只是对str做了个别名(python2里的str就是bytes, py3里的str是unicode),没有像py3一样给你显示的多出来一层封装,但其实其内部还是封装了的。 这么讲吧, 无论是2还是三, 从硬盘到内存,数据格式都是 010101二进制到-->b'\xe4\xbd\xa0\xe5\xa5\xbd' bytes类型-->按照指定编码转成你能看懂的文字
posted @ 2022-07-23 17:10  思江  阅读(166)  评论(0编辑  收藏  举报