Из прошлого импорта 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 явно указано в вопросе).