почему мы вызываем печать после импорта print_function (в Python 2.6)

Чтобы получить функцию печати 3.0, мы делаем следующее в Python 2.6:

from __future__ import print_function 

Но для использования функции мы вызываем print () not print_function (). Это просто несогласованность или есть веская причина для этого?

Почему бы не следующее:

 from __future__ import print 

5 Solutions collect form web for “почему мы вызываем печать после импорта print_function (в Python 2.6)”

Причина в том, что при импорте из __future__ вы действительно просто устанавливаете флаг, который говорит интерпретатору вести себя немного иначе, чем обычно – в случае print_function print() становится доступной вместо оператора. Таким __future__ модуль __future__ является «особым» или «магическим» – он не работает, как обычные модули.

print_function – это имя FeatureName нельзя путать с самой встроенной функцией print . Это функция, доступная из будущего, так что вы можете использовать встроенную функцию, которую она может предоставить.

Другие функции:

 all_feature_names = [ "nested_scopes", "generators", "division", "absolute_import", "with_statement", "print_function", "unicode_literals", ] 

Существуют определенные причины, когда при переносе кода в следующую более высокую версию ваша программа останется такой, __future__ использует обновленную функцию вместо версии __future__ . Кроме того, если это имя функции или ключевое слово само по себе, это может вызвать путаницу с парсером.

Просто. print – ключевое слово в Python 2.

Так что заявление вроде

 from somewhere import print 

будет автоматическим SyntaxError в Python 2.

Разрешение (жесткое кодирование в синтаксисе)

 from __future__ import print 

считалось нецелесообразным.

В Python 3 print ключевого слова была изменена с вызова оператора на вызов функции.

Поэтому вместо того, чтобы говорить print value вам нужно сказать print(value) , или вы получите SyntaxError .

Выполняя import , это изменение также выполняется в Python 2, поэтому вы можете писать программы с использованием того же синтаксиса, что и Python 3 (по крайней мере, в том, что касается print ).

Минимальный пример

 >>> print # Statement. >>> from __future__ import print_function >>> print # Function object. <built-in function print> >>> print() # Function call. >>> 

Как упоминалось в: Что такое __future__ в Python, который используется и как / когда его использовать, и как он работает from __future__ являются волшебными утверждениями, которые изменяют, как Python анализирует код.

from __future__ import print_function в частности, изменения print из инструкции во встроенную функцию, как показано в интерактивной оболочке выше.

Почему print(1) работает без from __future__ import print_function в Python 2

Поскольку:

 print(1) 

анализируется как:

 print (1) ^^^^^ ^^^ 1 2 
  1. print заявления
  2. аргумент

вместо:

 print( 1 ) ^^^^^^ ^ ^ 1 2 1 
  1. функция print()
  2. аргумент

А также:

 assert 1 == (1) 

как указано в: Правило синтаксиса для запятой для кортежа Python

Interesting Posts

синтаксический анализ XML-файла получает UnicodeEncodeError (ElementTree) / ValueError (lxml)

Mac OSX python ssl.SSLError: подтверждение сертификата SSL: CERTIFICATE_VERIFY_FAILED] (_ssl.c: 749)

Проблемы с новым стилем сельдерея api

Как установить среду conda в автономном режиме?

Могу ли я использовать механизм «как» в выражении if

Pygame – окно и класс спрайтов – python

Создание данных из уникальных пар значений путем фильтрации по нескольким столбцам

Преобразовать строку в имя объекта

Как __slots__ избегает поиска в словаре?

Что такое WSGI и CGI на простом английском языке?

scipy.optimize.linprog не может найти допустимую отправную точку, несмотря на то, что существует реальный ответ

Django – получение POST для возврата словаря, где значения являются списками

Django: используя пользовательскую функцию upload_to, можно запросить многотоварные поля перед сохранением?

Почему bool (x), где x – любое целое число, равное True

импортировать пакет python, когда модуль имеет такое же имя

Python - лучший язык программирования в мире.