Python future - zhongjiajie/zhongjiajie.github.com GitHub Wiki

Python-future

__future__语句是 python2 的概念,那么 python3 对于 python2 就是future了.用于在 python2 环境下使用 python3 的语句.场景可能是从 python2 向 python3 切换的过程中将局部语句通过这个方式进行切换.

division

想要在 Python 2.x 的中直接使用 Python 3.x 的除法,可以通过 __future__ 模块的 division 实现

  • py2.x: 地板除
    • 如果是整数相除,结果仍是整数,余数会被扔掉: 10 / 3 = 3
    • 如果想要保留小数,要先转化为浮点型: 10.0 / 3 = 3.3333333333333335
  • py3.x: 标准除法
    • 10.0 / 3 = 3.3333333333333335
    • 通过//使用地板除: 10 // 3 = 3

absolute_import

绝对引入,找顶层包名的模块.

pkg
  |-- init.py
  |-- main.py
  |-- string.py
  • py 2.x: 如果想要在pkg文件夹中引用string模块,可以使用import string.他的逻辑是从当前文件夹一层一层往上找直到找到模块.如果此时先要导入标准库中的模块,要使用from __future__ import absolute_import
  • py 3.x: import string会直接导入标准库的,如果想使用pkg下面的string.py则要使用from pkg import string

print_function

使用 python3 的print函数

# py2环境
from __future__ import print_function  # 导入之后print就是python3中的print函数
print('you are good')                  # 这个能运行
print 'you are good'                   # 这个会报错

unicode_literals

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

  • py 2.x: 'xxx' 表示str, u'xxx' 表示unicode
  • py 3.x: 所有字符串都被视为unicode, 因此写 u'xxx''xxx' 是完全一致的
⚠️ **GitHub.com Fallback** ⚠️