Из прошлого импорта print_statement

Есть ли какой-то эквивалент from __future__ import print_function, который пересылает оператор print из python 2.x?

Также допускается ответ с участием магии ipython, которая позволяет мне печатать без необходимости окружающих парнеров во время прототипирования.

Ответ 1

Некоторое предложение для IPython

%autocall
print "Hi"

Определить магию с помощью автозапуска

from IPython.core.magic import register_line_magic
@register_line_magic
def p(line):
    print(line)
p "Hi"

Определить магию при отключении автозапуска

from IPython.core.magic import register_line_magic
@register_line_magic
def p(line):
    print(eval(line))
%p "Again"

Вы можете создать файл .config/ipython/profile_default/startup/autoprint.py для функций магии линии.

Ответ 2

Предварительный ответ (предпочтительным будет решение, которое не включает в себя ведущий /.): IPython автоматически вызывает объект, если строка начинается с /, даже если он имеет отступ:

def f():
    /print 'foo'

f()

выводит foo.

Edit:

  • IPython также имеет %autocall магическую функцию, которая, ну, автоматически вызывает функции, поэтому после выполнения %autocall 1, набрав print 3 в ячейке действует как print в python 2.x(хотя, к сожалению, это не работает в определениях функций, таких как /.

  • Кроме того, поскольку это функция, а не оператор, вы можете просто сделать p = print, поэтому более поздние /p 'foo' вызовы дают вам почти pdb -подобное поведение (то, что я собирался, но это wasn ' t явно указано в вопросе).