2016-02-08 4 views
0

Я хочу иметь псевдоним для печати. Следующий метод завершается с SyntaxError:set variable to "print" в python 2

>>> a = print 

Как я могу, если вообще, установите новый псевдоним для оператора печати? Python версия -> 2,7

+1

Вы действительно не должны делать это. Просто определите свою специальную функцию 'my_print()' и используйте ее вместо 'print'. Одна из причин заключается в том, что многие другие коды используют 'print', например, для отображения информации об ошибках, и вы не сможете увидеть эти ошибки. – taleinat

+0

Вы можете сделать это, но сначала вам придется импортировать 'print_function' в свой модуль. –

ответ

3

Обычно вы не можете тень питон ключевых слов (которые используются, чтобы сделать питон "заявление", такими как 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):

... отсчеты

читаемость.

...

+0

Хороший ответ! Я также добавил бы [ссылку на руководство] (https://docs.python.org/2/library/functions.html?highlight=print#print) – alfasin

+0

@alfasin - Добавлено. Я также подробно рассказал о том, что на самом деле происходит здесь, хотя я не уверен, что это необходимо (и, надеюсь, не слишком затмевает реальный ответ с помощью мелочей - Мысли?) – mgilson