python2.x和python3.x的版本区别

  Python 3.x 版本相对于Python的早期版本,是一个较大的升级;许多针对早期Python版本设计的程式都没法在Python 3.0上正常执行。python

Python 3.0 的变化主要体如今如下几个方面:

1. print()函数函数

  Python 2 中的print语句没有了,取而代之的是print()函数编码

在Python2.6和Python2.7中,这三种形式是等价的 print "fish" 
    print ("fish")      # print后面有个空格
    print("fish")       # print()不能带任何其余参数

2. Unicodespa

  python 2 默认支持ASCII编码,是不支持中文的;而Python 3 中默认是utf-8编码,能够识别中文;命令行

Python 2.x中:设计

>>> str = "我爱北京天安门"
>>> str '\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'

>>> str = u"我爱北京天安门"
>>> str u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'

Python 3.x中:code

>>> str = "啊哈哈哈"
>>> str '啊哈哈哈'

3. 异常对象

  python 3 中捕获异常的语法由 except Exception,e 改为 except Exception as eblog

  在2.x时代,全部类型的对象均可以直接被抛出;但在3.x时代,只有继承自BaseException的对象才能够被抛出,并且会让异常变得更为专注,只有在错误发生的状况才能用异常捕获语句来处理。继承

4. xrange

  在Python 2 中 xrange() 是列表,它建立迭代对象的用法是很是流行的。好比:for 循环或者是列表/集合/字典推导式。这个表现十分像生成器。但这个 xrange-iterable 是无穷的,意味着能够无限遍历。因为它的惰性求值,xrange() 函数 比 range() 更快。尽管如此,对比迭代一次,不建议重复迭代屡次,由于生成器每次都从头开始。

  在Python 3 中,range是可迭代对象;range()是像 xrange() 那样实现,在 Python 3 中 xrange() 会抛出命名异常。

5. 不等运算符

  Python 2.x 中的不等于有两种写法: != 和 <>

  Python 3.x 中去掉了 <>,只有一种 != 写法

6. 数据类型

  Python 3.x 去除了long类型,只有一个int类型,但它的行为就像是 2.x 版本的long;并且新增了bytes类型

  str对象和bytes对象能够用 .encode(str -> bytes) 或 .decode(bytes -> str)方法实现相互转化

7. raw_input() 和 input()

  Python 2 有两个全局函数,用在命令行请求用户输入

  第一个是:input(),等待用户输入python表达式,而后返回结果;

  第二个是:raw_input(),用户输入什么内容就返回什么

8. 全局函数CALLABLE()

  Python 2 中可使用全局函数callable()来检查一个对象是否可调用;而在Python 3 中,这个全局函数被取消了,为了检查一个对象是否可调用,能够检查特殊方法__call__()的存在性

相关文章
相关标签/搜索