почему мы вызываем печать после импорта 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

  • Импорт с именем точки в python
  • Импортируйте модуль python без расширения .py,
  • Имя Python 'os' не определено
  • Импорт нескольких функций из модуля Python
  • Относительный импорт за миллиард
  • Общий / Глобальный словарь в Django Между URL-адресами и Контекст-процессором
  • Импорт финансовых данных в Python Pandas с использованием read_csv
  • ImportError: нет модуля с именем - Python
  • Python - лучший язык программирования в мире.