__future__
python有一个特殊模块,__future__,可在旧版本中使用新版本特征
应用
旧版本:
print '\'abc\' is unicdoe?', isinstance('abc', unicode)
print 'u\'abc\' is unicdoe?', isinstance(u'abc', unicode)
print '\'abc\' is str?', isinstance('abc', str)
print 'b\'abc\' is str?', isinstance(b'abc', str)
print '10 / 3 =', 10 / 3
print '10.0 / 3 =', 10.0 / 3
print '10 // 3 =', 10 // 3
print '10.0 // 3 =', 10.0 // 3
output:
'abc' is unicdoe? False
u'abc' is unicdoe? True
'abc' is str? True
b'abc' is str? True
10 / 3 = 3
10.0 / 3 = 3.33333333333
10 // 3 = 3
10.0 // 3 = 3.0
新版本:
from __future__ import unicode_literals
from __future__ import division
print '\'abc\' is unicdoe?', isinstance('abc', unicode)
print 'u\'abc\' is unicdoe?', isinstance(u'abc', unicode)
print '\'abc\' is str?', isinstance('abc', str)
print 'b\'abc\' is str?', isinstance(b'abc', str)
print '10 / 3 =', 10 / 3
print '10.0 / 3 =', 10.0 / 3
print '10 // 3 =', 10 // 3
print '10.0 // 3 =', 10.0 // 3
output:
'abc' is unicdoe? True
u'abc' is unicdoe? True
'abc' is str? False
b'abc' is str? True
10 / 3 = 3.33333333333
10.0 / 3 = 3.33333333333
10 // 3 = 3
10.0 // 3 = 3.0
注:这里旧版本为2.7,新版本为3.x,字符串前缀b和u大小写均可
解释:
- 在python2.7中,u(U)前缀为Unicode字符串,其余为ASCII字符串,在python3.x中,b(B)前缀为ASCII字符串,其余为Unicode字符串
- 在python2.7中,/整数除为floor除,/浮点除为精确除,//除为floor除,在python3.x中,/除为精确除,//除为floor除