python2 python3区别(续)

1.除法


Python2


Python3


int/int → int


int/int → float

  1. python2下整数除以整数返回整数类型,python3下整数除以整数返回浮点数类型
  2. 当某些语句假定变量为整数类型时,上面的区别会造成python3下的运行时错误。

建议兼容写法:

  1. 建议新写python2脚本时加入from __future__ import division, 这样Python2的脚本就会与python3行为一致,也返回浮点数。
  2. 必须使用整数的地方建议使用类型转换, int(), math.floor(), math.ceil(), floor(), round() 等
  3. 注意向下取整除法运算符"//" 只在两个操作数都为整数时返回整数类型,否则返回浮点数 x.0, 此运算符在python2和python3下行为一致。

2.数字


Python2


Python3


int类型的最大值为sys.maxint


int无最大值限制


long类型无最大值


取消long类型,所有整数为int类型

   

常量1L表示long类型的常量


1L为语法错误

   

八进制常量以0或0o开头

,如0600, 0o600


八进制常量只可以用0o开头,

如0o600

主要兼容问题:

  1. 长整型以及八进制常量在Python3的语法错误问题
  2. 运行时期间Python3找不到long类型

建议兼容写法:

  1. 八进制常数统一使用0o开头。
  2. 用if判断python的版本避免python3运行到含long的语句
  3. 判断变量是否为数字需要判断python的版本:isinstance(x, int) or (sys.version_info[0] < 3 and isinstance(x, long)
  4. 不要使用1L之类的数字常量,Python3下为语法错误, 可以使用long(1)来避免语法错误

3迭代器


Python2


Python3


def next():


def __next__()


iter.next()


一般不使用此语句


next(iter)


next(iter)

  1. python2与python3定义迭代器的函数名不一致
  2. python3的内置类中不再含有next()方法。

建议兼容写法:

  1. def next(self):

    ....

....

def __next__(self):

return
self.next()

2. 如果基类中已经按照上面定义了__next__(), 改写了next()的派生类无需再定义__next__()

     3. 不要使用iter.next(), 统一使用next(iter), 注意next()全局函数在python2下调用类的next()方法,在python3下调用类的__next()__方法.

4字典


Python2


Python3


dict.keys()返回列表


dict.keys()返回迭代器


dict.iterkeys()返回迭代器


无此语句


dict.items()返回列表


dict.items()返回迭代器


dict.has_key(x)


无此函数


x in dict


x in dict

建议兼容写法:

  1. 不使用iterkeys和has_keys
  2. 用 x in dict替代 dict.has_key(x)
  3. 当需要把keys(), items() 的值赋给变量,或者作为函数的返回值的时候建议使用list()转换为列表。

5异常处理


Python2


Python3


except ImportError, e


语法错误


except ImportError as e


except ImportError as e

   

raise ImportError,‘msg‘


语法错误


raise ImportError("msg")


raise ImportError("msg")

以上全部使用Python3的写法, Python2的写法不再被Python3支持。Python3的写法在python2的语义相同

原文地址:https://www.cnblogs.com/berrycake/p/10375489.html

时间: 2024-10-12 13:49:34

python2 python3区别(续)的相关文章

Python之路Python3【第零篇】Python2 &amp; Python3区别持续更新~

print def print(self, *args, sep=' ', end='\n', file=None): # known special case of print """ print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword ar

Ubuntu16.04 下python2 | python3

在终端分别输入python,python2,python3 python和python2默认都是python2 python3才是python3 Ubuntu下是默认没有pip的,需要自己手动安装 sudo apt install python-pip #安装python2的pip sudo apt install python3-pip # 安装python3的pip pip list #查看python2下的pip安装包 pip3 list #查看python3下pip安装包 更换pip源

windows和linux下 Python2,Python3 的环境及安装

目录 windows和linux下 Python2,Python3 的环境及安装 window下安装 一. 手动安装 二. pip安装 linux下 安装 更新Python 笔者有话 windows和linux下 Python2,Python3 的环境及安装 window下安装 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机]-->[属性]-->[高级系统设置]-->[高级

Python2 和 Python3 区别汇总

[Python2 和 Python3 的区别汇总,不定期补充] print 在进行程序调试时用得最多的语句可能就是 print,在 Python 2 中,print 是一条语句,而 Python3 中作为函数存在.有人可能就有疑问了,我在 Python2 中明明也看到当函数使用: # py2 print("hello") # 等价 print ("hello") #py3 print("hello") 然而,你看到的只是表象,那么上面两个表达式有

python3和Python2的区别(被坑太久了)

print函数:(Python3中print为一个函数,必须用括号括起来:Python2中print为class) Python 2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象. Python 2 1 2 3 4 print 'Python', python_version() print 'Hello, World!' print('Hello, World!') print "text", ; print 'print m

python2 和 python3 区别

python2 python 2 必须加object加入后是新式类 python 2 不加object是经典类 class HTTP(object): # 经典类和新式类 @staticmethod def get(url,return_json = True): r = requests.get(url) #restful #json if r.status_code != 200: return {} if return_json else '' return r.json() if ret

python3和python2的区别

进入不同语言版本的Python交互环境 py -2 py -3 pip 命令的执行 : py -2 -m pip install xxxx py -3 -m pip install xxxx pip3 install nose 这个也可以 执行python文件 py -2 a.py py -3 a.py 也可以进入到python3.6的安装目录 把python.exe 修改为python3.exe 在环境变量里面加入这个Python3.6的路径 Python3改变的点: Print重大变化,pr

Python3和Python2的区别 持续更新

Python2: 重复代码 语言不统一 不支持中文 input() 输入数字获取数字    输入字符串必须自己手动写引号 raw_input 和Python3中的input一样 在Python2中print可以括号  也可以不加括号 在Python2中除法得到的是整型 在Python2中默认编码是 ascii码 python2中数字过长输出会出现长整形long Python3: 代码不重复 语言统一 支持中文 input() print()必须加括号 在Python2中除法得到的是浮点型 Pyt

Python3.x 和Python2.x 区别

1.性能Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果.Py3.1性能比Py2.5慢15%,还有很大的提升空间.2.编码Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:    >>> 中国 = 'china'    >>>print(中国)    china3. 语法1)去除了<>,全部改用!=2)去除``,全部改用repr