9 Stimmen

IPython, Semikolon zum Unterdrücken der Ausgabe funktioniert nicht

In der Dokumentation unter http://ipython.org/ipython-doc/dev/interactive/tips.html steht, dass man ein Semikolon (;) an das Ende eines Befehls setzen soll, um dessen Ausgabe zu unterdrücken. Dies scheint in meinem Fall nicht zu funktionieren, da selbst ein

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

Habe ich eine falsche Vorstellung von der Leistungsunterdrückung oder ist dies ein Fehler? Dies ist besonders ärgerlich, wenn man in pudb arbeitet, da es in meinem Fall schrecklich blinkt, wenn ich "next" oder "step into" drücke.

P.S die Ausgabe ist weder auf meinem ubuntu ipython 0.10 noch osx lion ipython 0.11 unterdrückt. Obwohl das Blinken Problem ist schlimmer in osx, wahrscheinlich wegen item2.

12voto

Versuchen Sie etwas wie 1 + 1; . Ohne das Semikolon sollte es Ihnen eine Rückmeldung über das Ergebnis geben, indem es ausgedruckt wird (formatiert durch repr (obwohl das bei ganzen Zahlen keine Rolle spielt) - ich nehme an, dass diese Ausgabe unterdrückt werden soll. Die Shell unterdrückt nicht (und sollte es auch nicht) das Schreiben in die Datei, auf die zufällig von sys.stdout (was im Wesentlichen das ist, was print tut). Das ist eine ganz andere Sache und nicht die Aufgabe der Shell.

6voto

Zero Punkte 10418

Hinzufügen %%capture als erste Zeile der Zelle. z.B.

%%capture
print('Hello')

Dies verwirft einfach die Ausgabe, aber die %%capture magic kann verwendet werden, um die Ausgabe in einer Variablen zu speichern - die Dokumente konsultieren

1voto

pizoelectric Punkte 424

Hier ein weiteres Beispiel aus dem Dataquest - 28 Jupyter Notebook Tipps, Tricks und Abkürzungen Posten:

  # 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?

Und ein Beispiel für "funktionierende" Semikolonunterdrückung:

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

Es scheint also Anweisungen zu unterdrücken, die normalerweise im Terminal angezeigt werden, aber nicht "Inline"-Typen wie Plots.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X