Python future - zhongjiajie/zhongjiajie.github.com GitHub Wiki
__future__
语句是 python2 的概念,那么 python3 对于 python2 就是future了.用于在 python2 环境下使用 python3 的语句.场景可能是从 python2 向 python3 切换的过程中将局部语句通过这个方式进行切换.
想要在 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
绝对引入,找顶层包名的模块.
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
使用 python3 的print
函数
# py2环境
from __future__ import print_function # 导入之后print就是python3中的print函数
print('you are good') # 这个能运行
print 'you are good' # 这个会报错
为了适应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'
是完全一致的