在python中使用  from __future__ import xxx 可以达到在python2.7中使用python3.x 的一些改变

以下转载自:廖雪峰的官方网站

使用__future__

Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了。

从Python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,Unicode字符串用u'xxx'表示unicode,而在3.x中,所有字符串都被视为unicode,因此,写u'xxx''xxx'是完全一致的,而在2.x中以'xxx'表示的str就必须写成b'xxx',以此表示“二进制字符串”。

要直接把代码升级到3.x是比较冒进的,因为有大量的改动需要测试。相反,可以在2.7版本中先在一部分代码中测试一些3.x的特性,如果没有问题,再移植到3.x不迟。

Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。举例说明如下:

为了适应Python 3.x的新的字符串的表示方法,在2.7版本的代码中,可以通过unicode_literals来使用Python 3.x的新的语法:

# still running on Python 2.7from __future__ import unicode_literalsprint '\'xxx\' is unicode?', isinstance('xxx', unicode)
print 'u\'xxx\' is unicode?', isinstance(u'xxx', unicode)
print '\'xxx\' is str?', isinstance('xxx', str)
print 'b\'xxx\' is str?', isinstance(b'xxx', str)

注意到上面的代码仍然在Python 2.7下运行,但结果显示去掉前缀u'a string'仍是一个unicode,而加上前缀bb'a string'才变成了str:

$ python task.py
'xxx' is unicode? True
u'xxx' is unicode? True
'xxx' is str? False
b'xxx' is str? True

类似的情况还有除法运算。在Python 2.x中,对于除法有两种情况,如果是整数相除,结果仍是整数,余数会被扔掉,这种除法叫“地板除”:

>>> 10 / 3
3

要做精确除法,必须把其中一个数变成浮点数:

>>> 10.0 / 3
3.3333333333333335

而在Python 3.x中,所有的除法都是精确除法,地板除用//表示:

$ python3
Python 3.3.2 (default, Jan 22 2014, 09:54:40)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3

如果你想在Python 2.7的代码中直接使用Python 3.x的除法,可以通过__future__模块的division实现:

from __future__ import divisionprint '10 / 3 =', 10 / 3
print '10.0 / 3 =', 10.0 / 3
print '10 // 3 =', 10 // 3

结果如下:

10 / 3 = 3.33333333333
10.0 / 3 = 3.33333333333
10 // 3 = 3

小结

由于Python是由社区推动的开源并且免费的开发语言,不受商业公司控制,因此,Python的改进往往比较激进,不兼容的情况时有发生。Python为了确保你能顺利过渡到新版本,特别提供了__future__模块,让你在旧的版本中试验新版本的一些特性。

python : 使用 __future__ 的作用相关推荐

  1. python装饰器作用-Python 装饰器的作用

    python装饰器的作用,我是这么理解的, 比如本来已经有几个写好的函数,这几个函数的返回值都是list,现在我想要它们都返回str型的值,一个个改函数太累,也容易出错,装饰器能解决这样的问题,它能对 ...

  2. python assert 断言的作用

    python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助.本文主要是 ...

  3. python from __future__ import division

    python    from __future__ import division 之前一直很困惑,为什么这个模块叫future呢,难道有什么特殊功能能够让人们想到未来吗,最近才恍然大悟. pytho ...

  4. python super()方法的作用_详解python的super()的作用和原理

    Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递.uz0免费资源网 今天我们介绍的主角是s ...

  5. Python之pyc文件作用及生成方法

    Python之pyc文件作用及生成方法_宗而研之的博客-CSDN博客 1 什么是pyc 首先了解下python的运行机制及特性:当我们运行python文件程序的时候,Python解释器将源码转换为字节 ...

  6. python 中/ 与 //的作用、用法

    python 中/ 与 //的作用.用法 原创蓝莓·山药 最后发布于2019-06-21 09:27:54 阅读数 3591  收藏 展开 python语法中, / 是除法,例如:2/3 = 0.66 ...

  7. Python的pip3的作用与用法

    Python的pip3的作用与用法 pip3作用:自动下载安装Python的库文件(Python的库文件非常丰富,使用pip3命令下载安装这些库文件十分方便). Windows下pip3 命令使用方法 ...

  8. python匿名函数的作用_Python匿名函数 Lambda表达式作用

    在Python这门优美的编程语言中,支持一种有趣的语法格式(表达式),可以让我们在单行内创建一个最小的函数-python lambda匿名函数. 据说是借鉴了Lisp语言中lambda表达式,它可以使 ...

  9. python布尔值的作用_Python基础教程详解布尔变量的作用

    布尔值也叫真值,在Python开发(http://www.maiziedu.com/course/python-px/)中所有的值都被解释为真值,标准的真值为true和false.那么布尔变量在Pyt ...

最新文章

  1. 强化学习(Reinforcement Learning)是什么?强化学习(Reinforcement Learning)和常规的监督学习以及无监督学习有哪些不同?
  2. 基于DSP/BIOS和NDK的嵌入式网络操作系统设计方案
  3. hdu 3879(最小割模型求解最大权闭合图)
  4. tableview下拉刷新
  5. 【Linux】一步一步学Linux——apt-sortpkgs命令(280)
  6. 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!...
  7. python在统计专业的应用_Python统计学一数据的概括性度量详解
  8. Linux内核分析 - 网络[十七]:NetFilter之连接跟踪
  9. windows下SBT的安装与使用
  10. 2016最新php支付平台源码,Thinkphp各大支付平台在线支付集成源码
  11. 算法训练 Bus Tour
  12. 电芯知识汇总(转载)
  13. 冷凝器胶球自动在线清洗装置在中央空调主机冷凝器清洗方案介绍
  14. 深信服 AC上网 行为管理设置
  15. Ubuntu18.04 wifi不稳定
  16. 什么是用户价值分层?
  17. 短连接生成系统如何设计?
  18. 个人常用观影网址记录
  19. Ambire钱包白皮书
  20. s:iterator各种遍历用法

热门文章

  1. atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?
  2. python 多线程读写文件_python多线程写入文件问题
  3. 8b 10b c语言编码,2012年计算机等级二级C语言章节习题及答案(10)
  4. matlab提示用户输入参数,调用函数显示输入参数不足
  5. java+基于dom4j工具类_基于dom4j的xml映射实体的工具类(java)
  6. jsf教程_JSF教程
  7. portlet_Portlet生命周期
  8. 编程c语言中,向上取整函数_C编程中的函数
  9. linux基本命令示例_Linux正常运行时间命令示例
  10. C语言内存泄漏问题检视方法