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



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



from __future__ import print_function


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



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



from __future__ import print
613   5  

5 ответов:

причина в том, что при импорте из __future__ вы действительно просто устанавливаете флаг, который говорит интерпретатору вести себя немного иначе, чем обычно-в случае print_function на print() функция становится доступной вместо оператора. Элемент __future__ модуль таким образом" особенный "или" волшебный " -- он не работает как обычные модули.

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

другие функции включают в себя:

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

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

простой. печать является ключевым словом в 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     # 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 с запятыми

Comments

    Ничего не найдено.