Python2.x与3??.x版本区别

python的3.0版本,常被称为python 3000,或简称py3k。相对于python的早期版本,这是一个较大的升级。

为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。

为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

 

立即学习“Python免费学习笔记(深入)”;

新的Python程式建议使用Python 3.0版本的语法。

 

立即学习“Python免费学习笔记(深入)”;

除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。

大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

主要变化

Python 3.0的变化主要在以下几个方面:

print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:

print “fish”

print (“fish”) #注意print后面有个空格

print(“fish”) #print()不能带有任何其它参数

   

然而,Python 2.6实际已经支持新的print()语法:

from __future__ import print_function

print(“fish”, “panda”, sep=’, ‘)

   

新的str类别表示一个Unicode字串,相当于Python 2.x版本的unicode类别。而位元组序列则用类似b”abc”的语法表示,用bytes类表示,相当于Python 2.x的str类别。

现在两种类别不能再隐式地自动转换,因此在Python 3.x里面”fish”+b”panda”是错误。正确的写法是”fish”+b”panda”.decode(“utf-8”)。 Python 2.6可以自动地将位元组序列识别为Unicode字串,方法是:

from __future__ import unicode_literals

print(repr(“fish”))

   

除法运算符”/”在Python 3.x内总是返回浮点数。而在Python 2.6内会判断被除数与除数是否是整数。如果是整数会返回整数值,相当于整除;浮点数则返回浮点数值。

为了让Python 2.6统一返回浮点数值,可以:

from __future__ import division

print(3/2)

   

result={}

for k, v in d.items():

    result[expr1]=expr2

return result

   

集合推导式(Set Comprehensions) {expr1 for x in stuff}。这个语法等价于:

result = set()

for x in stuff:

    result.add(expr1)

return result

   

def sendMail(from_: str, to: str, title: str, body: str) -> bool:

    pass

   

旧的名字

新的名字

_winreg    winreg    

ConfigParser    configparser    

copy_reg    copyreg    

Queue    queue    

SocketServer    socketserver    

repr    reprlib    

八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支援这两种语法。

dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip()不再返回列表,而是迭代器。

如 果两个物件之间没有定义明确的有意义的顺序。使用, =比较它们会投掷异常。比如1

可以注释函数的参数与返回值。此特性可方便IDE对原始码进行更深入的分析。例如给参数增加类别讯息:

捕获异常的语法由except exc, var改为except exc as var。使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支援这两种语法。

集合(set) 的新写法:{1,2,3,4}。注意{}仍然表示空的字典(dict) 。

字典推导式(Dictionary comprehensions) {expr1: expr2 for k, v in d},这个语法等价于

 

立即学习“Python免费学习笔记(深入)”;

合并int与long类型。

多个模块被改名(根据PEP8):

StringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。

取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2282532.html

(0)
上一篇 2025年2月27日 19:30:45
下一篇 2025年2月23日 20:54:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python多线程

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理。 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能…

    编程技术 2025年2月27日
    200
  • Python正则表达式

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。python 自1.5版本起增加了re 模块,它提供 perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compi…

    编程技术 2025年2月27日
    200
  • 人生苦短 我用Python

    python是我喜欢的语言,简洁、优美、易用。前两天,我很激昂地向朋友宣传python的好处。   “好吧,我承认Python不错,但它为什么叫Python呢?”   “呃,似乎是一个电视剧的名字。”   “那你说的Guido是美国人么?”…

    2025年2月27日
    200
  • PythonCookbook——数据结构和算法

    第一章    数据结构和算法  1.1    将序列分解为单独的变量 p = (4, 5)x, y = pprint x print y data = [ ‘ACME’, 50, 91.1, (2012, 12, 21) ]name, sh…

    编程技术 2025年2月27日
    200
  • python实现单链表

    # coding:utf-8  class node:     def __init__(self, value):         self.data = value         self.next = none  class lin…

    编程技术 2025年2月27日
    200
  • python截取字符串

    某个字符串为stmp=”abcdef54321″ 取前面5个stmp[:5] 取后面5个stmp[-5:] 从前面开始取,不包括最后两个stmp[:-2] 从第5个开始取到最后stmp[4:] 立即学习“Python…

    编程技术 2025年2月27日
    200
  • python中的深拷贝与浅拷贝

    copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。 copy.deepcopy 深拷贝 拷贝对象及其子对象 示例: >>> import copy >>> a=[1,2,3,4,[&#…

    编程技术 2025年2月27日
    200
  • python面向对象

    类中成员  1.字段     1.静态字段  通过类本身访问 静态字段在类代码加载时候就已经创建,无需等到new 类名()     2.普通字段  通过对象访问  2.方法 立即学习“Python免费学习笔记(深入)”;     所有的方法…

    编程技术 2025年2月27日
    200
  • Python写各大聊天系统的屏蔽脏话功能原理

    Python写各大聊天系统的屏蔽脏话功能原理 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时候检测,那么个人还是喜欢用列表,因为列表…

    2025年2月27日 编程技术
    200
  • Python装饰器详解

     python中的装饰器是一个用得非常多的东西,我们可以把一些特定的方法、通用的方法写成一个个装饰器,这就为调用这些方法提供一个非常大的便利,如此提高我们代码的可读性以及简洁性,以及可扩展性。 在学习python装饰器之前我们先看看这样一个…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论