Я хочу иметь псевдоним для печати. Следующий метод завершается с SyntaxError
:set variable to "print" в python 2
>>> a = print
Как я могу, если вообще, установите новый псевдоним для оператора печати? Python версия -> 2,7
Я хочу иметь псевдоним для печати. Следующий метод завершается с SyntaxError
:set variable to "print" в python 2
>>> a = print
Как я могу, если вообще, установите новый псевдоним для оператора печати? Python версия -> 2,7
Обычно вы не можете тень питон ключевых слов (которые используются, чтобы сделать питон "заявление", такими как print
, for
, exec
, if
, ...). Однако print
является особенным. Чтобы облегчить совместимость с python3.x, вы можете оставить заявление для печати с помощью
from __future__ import print_function
в верхней части модуля (перед любым другим импортом других не __future__
импорта).
Это отключает оператор print
и не отделяет print
function (что вы можете затем снова теневой с помощью любой функции, определенной пользователем). например (От РЕПЛ):
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import print_function
>>> def foo(): pass
...
>>> print = foo
>>>
>>> print('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: foo() takes no arguments (1 given)
С учетом сказанного, я думаю, что сглаживание встроенные функции, как правило, плохая идея. Будущие читатели вашего кода (включая вас самих), скорее всего, будут смущены, когда они попытаются использовать этот код, а print
не делает то, за что они обусловлены, чтобы поверить. Помните Дзен питона (import this
):
... отсчеты
читаемость.
...
Хороший ответ! Я также добавил бы [ссылку на руководство] (https://docs.python.org/2/library/functions.html?highlight=print#print) – alfasin
@alfasin - Добавлено. Я также подробно рассказал о том, что на самом деле происходит здесь, хотя я не уверен, что это необходимо (и, надеюсь, не слишком затмевает реальный ответ с помощью мелочей - Мысли?) – mgilson
Вы действительно не должны делать это. Просто определите свою специальную функцию 'my_print()' и используйте ее вместо 'print'. Одна из причин заключается в том, что многие другие коды используют 'print', например, для отображения информации об ошибках, и вы не сможете увидеть эти ошибки. – taleinat
Вы можете сделать это, но сначала вам придется импортировать 'print_function' в свой модуль. –