__future__ 模块

Python 3.x引入一些Python2不兼容的关键字和函数,可以通过在 Python2 内置的模块 __future__ 导入。建议如果你想在代码中支持 Python3.x,使用__future__导入它。

例如,如果想在 Python2 中拥有 Python 3.x 整数的除法行为,添加下面的 import 语句
  1. from __future__ import division

print函数

在 Python3 最值得注意和最广为人知的变化是print函数的使用。print 函数使用的括号()在Python3中是强制性的。它在 Python2 中是可选的。

  1. print "Hello World" #is acceptable in Python 2
  2. print ("Hello World") # in Python 3, print must be followed by () 

print()函数默认情况下在结束时会插入一个换行。在 Python2,它可以通过 ',' 在末行抑制输出换行。 在 Python3 则使用"end=' '" 附加空格,而不是换行

  1. print x, # Trailing comma suppresses newline in Python 2
  2. print(x, end=" ") # Appends a space instead of a newline in Python 3
从键盘读取输入

Python2 中有输入函数两个版本。 input() 和 raw_input()。如果它被包含在引号 '' 或 "",input() 对待接收到的数据作为字符串,否则数据将被视为数字类型。

在 Python3 中 raw_input()函数已被弃用。此外,接收到的输入数据总是作为字符串处理。
  1. In Python 2 >>> x=input('something:')
  2. something:10 #entered data is treated as number
  3. >>> x
  4. 10
  5. >>> x=input('something:')
  6. something:'10' #eentered data is treated as string
  7. >>> x
  8. '10'
  9. >>> x=raw_input("something:")
  10. something:10 #entered data is treated as string even without ''
  11. >>> x
  12. '10'
  13. >>> x=raw_input("something:")
  14. something:'10' #entered data treated as string including ''
  15. >>> x
  16. "'10'" In Python 3 >>> x=input("something:")
  17. something:10
  18. >>> x
  19. '10'
  20. >>> x=input("something:")
  21. something:'10' #entered data treated as string with or without ''
  22. >>> x
  23. "'10'"
  24. >>> x=raw_input("something:") # will result NameError
  25. Traceback (most recent call last):
  26. File "", line 1, in x=raw_input("something:")
  27. NameError: name 'raw_input' is not defined
整数除法

在Python2,两个整数的除法的结果会四舍五入到最接近的整数。如:3/2 其结果将显示 1。 为了获得一个浮点除法,分子或分母必须明确为浮点数。因此无论是 3.0/2 或 3/2.0 或 3.0/2.0 将产生1.5 。

Python3 计算 3/2 默认结果值为 1.5,这对新手程序员更加直观。
Unicode表示
Python2 里如果你想将它保存为 Unicode,需要标记为 U 的字符串。

Python3 中的字符串默认存储为 Unicode。在Python3,我们有个Unicode(UTF-8)字符串和 2 字节类:字节和字节数组。

xrange()函数已被删除
在 Python2 的 range() 函数返回一个列表,还有 xrange()返回一个对象只会在需要时在范围内产生所需项目以节省内存。

在Python3,range()函数去除了,而 xrange()已更名为 range()。 另外在 Python3.2 以及更高的版本中, range()对象支持切片。

引发异常

Python2 中同时接受符号的'大胆'和'新'的语法;如果我们不在括号中括入异常参数,Python3 中会引发一个 SyntaxError:

  1. raise IOError, "file error" #This is accepted in Python 2
  2. raise IOError("file error") #This is also accepted in Python 2
  3. raise IOError, "file error" #syntax error is raised in Python 3
  4. raise IOError("file error") #this is the recommended syntax in Python 3
异常的参数
在 Python3,异常参数应以 'as' 关键字来声明。
  1. except Myerror, err: # In Python2
  2. except Myerror as err: #In Python 3

next() 函数和.next()方法

在Python 2,next() 作为生成器对象的一个方法是允许的。在 Python2,next()函数过度产生器对象遍历也是可以接受的。在Python3,但是,next()函数作为生成器方法来中止并引发AttributeError。

  1. gen = (letter for letter in 'Hello World') # creates generator object
  2.  
  3. next(my_generator) #allowed in Python 2 and Python 3
  4. my_generator.next() #allowed in Python 2. raises AttributeError in Python 3

2to3实用工具

随着 Python3 解释器,2t03.py 脚本将被通常安装在  tools/scripts 文件夹。 它读取 Python2.x 源代码,并应用了一系列的修复将它转变成有效的 Python3.x 代码。

  1. Here is a sample Python 2 code (area.py):
  2.  
  3. def area(x,y=3.14):
  4. a=y*x*x
  5. print a
  6. return a
  7.  
  8. a=area(10)
  9. print "area",a
  10.  
  11. To convert into Python 3 version:
  12.  
  13. $2to3 -w area.py
  14.  
  15. Converted code :
  16.  
  17. def area(x,y=3.14): # formal parameters
  18. a=y*x*x
  19. print (a)
  20. return a
  21.  
  22. a=area(10)
  23. print("area",a)

python2 和3的区别的更多相关文章

  1. 详解python2 和 python3的区别

    看到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又 ...

  2. python2与python3的区别 ,小数据池 bytes 类型

    一.python2和3的区别 在python3中 在python2中 print('ab')方式打印内容()括号是必须要有的.   print 'ab' 可以加可以不加. 只有range   有ran ...

  3. python2和python3的区别

    python2和python3的区别 参考链接:http://www.runoob.com/python/python-2x-3x.html 1.源码上的区别 python2 python3 源码不规 ...

  4. python2 与 python3的区别

    python2 与 python3的区别 几乎所有的python2程序都需要一些修改才能正常的运行在python3的环境下.为了简化这个转换过程,Python3自带了一个2to3的实用脚本.这个脚本会 ...

  5. while 运算符 初始编码 python2和python3的区别

    1.while 循环 2.运算符 3.初始编码 4.python2 和python3的区别 1.while循环: 关键词:while[循环]         break[跳出循环]         c ...

  6. python2 与 python3 语法区别

    python2 与 python3 语法区别 概述# 原稿地址:使用 2to3 将代码移植到 Python 3 几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下.为 ...

  7. python2 与 python3的区别总结

    python2 与 python3的区别总结    几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下.为了简化这个转换过程,Python 3自带了一个叫做2to3的 ...

  8. 详解python2 和 python3的区别-乾颐堂

    看到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又 ...

  9. python2和3的区别丶网络编程以及socketserver多线程

    一丶python2和python3的区别 1.编码&字符串 字符串: python2: Unicode v = u"root"  本质上用unicode存储(万国码) (s ...

  10. python2与python3的区别,以及注释、变量、常量与编码发展

    python2与python3的区别 宏观上: python2:源码不统一,混乱,重复代码太多. python3:源码统一标准,能去除重复代码. 编码上: python2:默认编码方式为ASCII码. ...

随机推荐

  1. php用apc实现的临界区 解决并发,资源互斥同步访问

    在面对线程或进程的互斥同步的控制问题时,常用的解决办法是:临界区,互斥锁,信号量 临界区保证在某一时刻只有一个线程能够访问到所需资源的方法. 任何时候,只能至多有一个线程处于临界区中.如果多个线程要求 ...

  2. bootstrap 兼容IE8设置

    <!--[if lt IE 9]> <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js" ...

  3. ios 读取通讯录数据

    #import <Foundation/Foundation.h> @interface LoadingContactData : NSObject // 读取通讯录 + (Loading ...

  4. Subversion安装

    一.Subversion介绍 Subversion是一个集中式的信息共享系统.版本库是Subversion的核心部分,是数据的中央仓库.版本库以典型的文件和目录结构形式文件系统树来保存信息.任意数量的 ...

  5. Redis + Jedis + Spring 实例(对象的操作)

        目录(?)[+] 不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然吃了苦,也做个记录,也许以后API升级后,能好用些呢?! 或许,是我的理解不对,没有真正的理解哈希表. 一.预期 接上 ...

  6. Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)

    触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的 ...

  7. Apple Swfit UI控件实现

    不下载你会懊悔的~~ 下载地址:https://github.com/HunkSmile/Swift.git // UILabel var label = UILabel(frame: self.vi ...

  8. 失效的URL访问限制(转)

    * 经常URL的保护仅仅是连接到该页面的链接不出现在未授权的用户面前.然而,一个有动机的.熟练的或者仅仅是幸运的黑客可能会找到并访问这些网页 , 调用这些功能并查看数据.在应用程序中,通过隐匿来实现安 ...

  9. Ubuntu系统下搭建Python开发环境

    之前演示了在Windows中安装Pycharm,很简单.下面介绍一下如何在Ubuntu中安装Pycharm 1.更新Python至3.5.1,执行以下命令: sudo add-apt-reposito ...

  10. 省市联动JQ封装比较简洁调用的方法

    前言 因为省市联动的需求在每个项目几乎存在,所以本人也对此在web页面通过封装比较简洁的JQ方法循环判断调用调用后台获取数据再绑定到Select表单上.如果对代码有什么疑问或者更好办法可以在评论区留言 ...