IPython, точка с запятой для подавления вывода не работает - PullRequest
4 голосов
/ 21 сентября 2011

В документации на http://ipython.org/ipython-doc/dev/interactive/tips.html говорится поставить точку с запятой (;) в конце команды, чтобы подавить вывод. Это не работает в моем случае, как даже

>>> \>>> print('Hello');  
--> 'Hello'

У меня неверное представление о подавлении вывода или это ошибка? Это особенно раздражает при работе в pudb, так как в моем случае он ужасно мигает, когда я нажимаю «следующий» или «шаг в».

P.S вывод не выводится ни на моем ubuntu ipython 0.10, ни на osx lion ipython 0.11. Хотя проблема прошивки хуже в osx, возможно, из-за item2.

Ответы [ 3 ]

5 голосов
/ 21 сентября 2011

Попробуйте что-то вроде 1 + 1;.Без точки с запятой он должен дать вам обратную связь о результате, напечатав его (отформатированный в repr, хотя это не имеет значения в случае целых чисел) - я предполагаю, что именно этот вывод должен быть подавлен.Оболочка не (и не должна) подавлять запись в файл, на который ссылается sys.stdout (что по сути и делает print).Это совершенно другой вопрос, а не работа оболочки.

4 голосов
/ 16 мая 2014

Добавьте %%capture в качестве первой строки ячейки.например,

%%capture
print('Hello')

Это просто отбрасывает вывод, но волшебство %%capture можно использовать для сохранения вывода в переменной - обратитесь к документации

1 голос
/ 31 января 2018

Вот еще один пример из Dataquest - 28 советов, приемов и ярлыков для Jupyter Notebook post:

  # Use a semicolon to suppress the output of a final function.
  %matplotlib inline
  from matplotlib import pyplot as plt
  import numpy
  x = numpy.linspace(0, 1, 1000)**1.5
  plt.hist(x); # Output not suppressed w/ semicolon?

И пример «рабочего» подавления точки с запятой:

x = 1 + 1
x; # Output suppressed w/ semicolon!

Похоже, что он подавляет операторы, которые обычно отображаются в терминале, но не «встроенные» типы, такие как графики.

...