Импортирование нововведений из модуля будущего __future__ — интересная
особенность языка Python. Языковые нововведения, которые появятся только в будущих
версиях, уже можно импортировать и использовать. Какие нововведения вы можете
использовать в вашей версии интерпретатора?
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
import sys
def future_features():
import __future__
return dict((x, getattr(__future__, x))
for x in __future__.all_feature_names)
def version_str(v):
return '{0}.{1}.{2} {3} {4}'.format(*v)
print('running {0}\n'.format(version_str(sys.version_info)))
msg = '{0} {1}\t... {2}'
print('\n'.join(msg.format(k.ljust(20),
version_str(v.optional),
version_str(v.mandatory))
for k, v in future_features().items()))
Нововведения будущего в моём интерпретаторе:
running 2.6.5 final 0
division 2.2.0 alpha 2 ... 3.0.0 alpha 0
nested_scopes 2.1.0 beta 1 ... 2.2.0 alpha 0
unicode_literals 2.6.0 alpha 2 ... 3.0.0 alpha 0
with_statement 2.5.0 alpha 1 ... 2.6.0 alpha 0
absolute_import 2.5.0 alpha 1 ... 2.7.0 alpha 0
generators 2.2.0 alpha 1 ... 2.3.0 final 0
print_function 2.6.0 alpha 2 ... 3.0.0 alpha 0
Программа выше специально была написана совместимой с Python 3. Вот результаты на новом интерпретаторе:
running 3.1.2 final 0
division 2.2.0 alpha 2 ... 3.0.0 alpha 0
nested_scopes 2.1.0 beta 1 ... 2.2.0 alpha 0
unicode_literals 2.6.0 alpha 2 ... 3.0.0 alpha 0
barry_as_FLUFL 3.1.0 alpha 2 ... 3.9.0 alpha 0
with_statement 2.5.0 alpha 1 ... 2.6.0 alpha 0
absolute_import 2.5.0 alpha 1 ... 2.7.0 alpha 0
generators 2.2.0 alpha 1 ... 2.3.0 final 0
print_function 2.6.0 alpha 2 ... 3.0.0 alpha 0
Тем, кому интересно, советую попробовать импортировать из будущего
символы braces и barry_as_FLUFL. Подробнее см. Google :)