py2和py3之间的不同

1、print函数



很琐碎,而 print 语法的变化可能是最广为人知的了,但是仍值得一提的是: Python 2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象。
Python 2 不具有额外的小括号问题。但对比一下,如果我们按照 Python 2 的方式不使用小括号调用 print 函数,Python 3 将抛出一个语法异常(SyntaxError)。

2、整除



如果你正在移植代码,这个变化是特别危险的。或者你在 Python 2 上执行 Python 3 的代码。因为这个整除的变化表现在它会被忽视(即它不会抛出语法异常)。
因此,我还是倾向于使用一个 float(3)/2 或 3/2.0 代替在我的 Python 3 脚本保存在 Python 2 中的 3/2 的一些麻烦(并且反而过来也一样,我建议在你的 Python 2 脚本中使用 from __future__ import division

3、Unicode



Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。
现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays

4、xrange模块



在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。
这个表现十分像生成器(比如。“惰性求值”)。但是这个 xrange-iterable 是无穷的,意味着你可以无限遍历。
由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange() 函数 比 range() 更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。
在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange() 会抛出命名异常)。

py2 xrange要比py3 range快

5、next()函数 and .next()方法



因为 next() (.next()) 是一个如此普通的使用函数(方法),这里有另外一个语法改变(或者是实现上改变了),值得一提的是:在 Python 2.7.5 中函数和方法你都可以使用,next() 函数在 Python 3 中一直保留着(调用 .next() 抛出属性异常)。

6、比较不可排序类型



在 Python 3 中的另外一个变化就是当对不可排序类型做比较的时候,会抛出一个类型错误。

7、通过input()解析用户的输入



幸运的是,在 Python 3 中已经解决了把用户的输入存储为一个 str 对象的问题。为了避免在 Python 2 中的读取非字符串类型的危险行为,我们不得不使用 raw_input() 代替。

原文地址:https://www.cnblogs.com/lmh001/p/10560342.html

时间: 2024-10-11 12:20:47

py2和py3之间的不同的相关文章

python模块之lib2to3(py2转py3自动化工具)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之lib2to3(py2转py3自动化工具) #http://tieba.baidu.com/p/3939904893 #操作步骤: 1.需要转换test.py文件为py3代码 #test.py文件放置在Scripts目录下,如果test.py文件不放置在Scripts目录下则 -w后面写完整的路径 #如: C:\python27\Tools\Scripts>2to3.py -w C:\P

windows10上同时安装py2和py3的情况

2018-06-14  16:14:51 1.同时安装python2和python3的时候,pip只是其中一个版本,使用对应Python版本的pip时,在命令行分别输入如下命令: 查看不同Python版本下pip的版本 python3 -m pip -V Python2 -m pip -V 安装各自的python包 python3 -m pip xxx python2 -m pip xxx 2.以下修改方式可以重新安装两个版本的pip,使得两个python版本的pip能够共存 在DOS命令框输入

py2与py3区别总结

1. py2中的str是py3中的bytes py2中的Unicode是py3中的str 2. py2里 import StringIO     StringIO.StringIO() py3里 import io    io.StringIO()  io.BytesIO() 3. py2 里 pip install mysql-python     import MySqldb py3 里 pip install pymysql             import pymysql      

同时安装py2与py3时的pip使用问题

很多新手都会在在电脑上面同时安装Python2和Python3,但是安装完两个版本以后pip如何使用?在命令行如何随心所欲的切换版本?下面我就来介绍一种方法:蛮简单的,亲测可用. 一.安装号两个版本,肯定要配置环境变量,这个就不多说了. 二.在Python安装好的盘里,找到Python.exe,然后对应分别设置为Python3.exe和Python2.exe.这样在命令行输入Python3和Python2就能任意使用两个版本了. 三.pip使用:我的Python默认版本是Python3. a.当

py2 to py3 return iterator

Views And Iterators Instead Of Lists Some well-known APIs no longer return lists: dict methods dict.keys(), dict.items() and dict.values() return "views" instead of lists. For example, this no longer works: k = d.keys(); k.sort(). Use k = sorted

在Ubuntu14.04中安装Py3和切换Py2和Py3环境

前几天小编给大家分享了如何安装Ubuntu14.04系统,感兴趣的小伙伴可以戳这篇文章:手把手教你在VMware虚拟机中安装Ubuntu14.04系统.今天小编给大家分享一下在Ubuntu14.04系统中如何安装Python3的简单教程,并且实现Python2和Python3直接的切换,具体的教程如下. 1.在Ubuntu系统中,关于Python2和Python3的安装其实很简单,比Windows下的安装要简单的多.一般来说,Python2都是Ubuntu系统自带的,默认的版本是Python2.

py2与py3的编码问题

一.python2 1.一共的两种类型 名称:存储类型 str:bytes(以bytes类型存储) Unicode:Unicode 二.Python3 1.两种类型 名称:存储类型 str:Unicode bytes:bytes 三.经过Unicode进行encode()或decode()都是以bytes的方式存储. 原文地址:https://www.cnblogs.com/gjx1212/p/12179527.html

keras系列︱seq2seq系列相关实现与案例(feedback、peek、attention类型)

之前在看<Semi-supervised Sequence Learning>这篇文章的时候对seq2seq半监督的方式做文本分类的方式产生了一定兴趣,于是开始简单研究了seq2seq.先来简单说一下这篇paper的内容: 创立的新形式Sequence AutoEncoder LSTM(SA-LSTM),Pre-trained RNNs are more stable, generalize better, and achieve state-of-the-art results on var

PyQt 5.4参考指南 ---- PyQt5和PyQt4之间的差异

pyqt4只有440个类, pyqt5有1000个类 pyqt商业版本和开源版本没有功能区别,如果pyqt与gpl协议不兼容,则考虑购买pyqt商业版本. GPL协议,general public liscense代码开源协议 http://www.mamicode.com/info-detail-456379.html PyQt5 和 PyQt4 之间的差异 PyQt5不兼容PyQt4(尽管经验表明,将PyQt4的应用程序移植到PyQt5难度不是很大).本节描述了两者之间的主要差异. 支持Py