Verwendung von IPython

Ich werde Ihnen zeigen, wie Sie damit an die Veröffentlichung von IPython 2.0 erinnern können.

Was ist IPython?

IPython ist eine leistungsstarke (wirklich leistungsstarke) Erweiterung des interaktiven Interpreters von Python. Es ist jedoch nicht nur eine Erweiterung, es hat die folgenden Funktionen.

Aber zuerst werde ich noch einmal kurz beschreiben, wie man die leistungsstarke interaktive IPython-Shell verwendet.

Lassen Sie es uns zuerst installieren.

$ pip install ipython

Beginnen wir mit der Installation.

$ ipython

Du bist nicht gut, weil du dich nur auf Komplement verlässt

Im Vergleich zur interaktiven Standard-Shell von Python wird die Leistungsfähigkeit von IPython zunächst durch die umfangreichen Ergänzungen deutlich. Geben Sie "import o" in die gestartete IPython-Shell ein und drücken Sie die Taste "".

In [1]: import o
octavemagic  opcode      operator    optparse    os

Sie haben einen wunderbaren und raffinierten Ergänzungskandidaten! Standardmäßige interaktive Shell-Vervollständigungen waren nicht sehr praktisch, aber IPython-Vervollständigungen sind durchaus verwendbar.

Versuchen wir es noch einmal. Geben Sie os.pa alsimport os`` <TAB>ein

In [1]: import os
In [2]: os.pa
os.pardir          os.path            os.pathconf        os.pathconf_names  os.pathsep

Sogar die importierten Module sind Kandidaten für die Fertigstellung.

Natürlich können Sie auch von Ihnen deklarierte Variablen vervollständigen.

In [3]: spam = 'Hello!'
In [4]: sp

Wenn Sie hier "" drücken, wird "Spam" abgeschlossen.

Darüber hinaus sollen nicht nur Python-Objekte und Schlüsselwörter, sondern auch Dateinamen und Verzeichnisnamen vervollständigt werden.

In [5]: .bash
.bash_history  .bash_profile  .bashrc

Diese Fertigstellung allein ist mehr als genug, um Sie zur Verwendung von IPython zu motivieren.

Ich weiß nicht, was es heißt, eine Selbstbeobachtung zu sein.

IPython macht es sehr einfach, Objekte zu untersuchen. Wenn Sie es ausführen, indem Sie dem Objektnamen "?" Hinzufügen, z. B. "Objektname?", Werden die Informationen dieses Objekts angezeigt.

Zum Beispiel sieht es wie folgt aus.

In [6]: spam?
Type:        str
String form: Hello
Length:      5
Docstring:
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or
errors is specified, then the object must expose a data buffer
that will be decoded using the given encoding and error handler.
Otherwise, returns the result of object.__str__() (if defined)
or repr(object).
encoding defaults to sys.getdefaultencoding().
errors defaults to 'strict'.

Eingebaute Module und natürlich Ihre eigenen Klassen sind in Ordnung. Was angezeigt wird, ist die festgelegte Dokumentzeichenfolge, die Funktions- / Methodendefinitionszeile und im Fall einer Klasse die Informationen des Konstruktors (?).

In [7]: os.path.join?
Type:        function
String form: <function join at 0x10c6592f0>
File:        /Users/mubae/.virtualenvs/py3/lib/python3.4/posixpath.py
Definition:  os.path.join(a, *p)
Docstring:
Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded.  An empty last part will result in a path that
ends with a separator.

Sie können auch detailliertere Informationen anzeigen, indem Sie "??" anstelle von "?" Verwenden.

In [8]: os.path.join??
Type:        function
String form: <function join at 0x10c6592f0>
File:        /Users/mubae/.virtualenvs/py3/lib/python3.4/posixpath.py
Definition:  os.path.join(a, *p)
Source:
def join(a, *p):
   """Join two or more pathname components, inserting '/' as needed.
   If any component is an absolute path, all previous path components
   will be discarded.  An empty last part will result in a path that
   ends with a separator."""
   sep = _get_sep(a)
   path = a
   try:
       for b in p:
           if b.startswith(sep):
               path = b
           elif not path or path.endswith(sep):
               path += b
           else:
               path += sep + b
   except TypeError:
       valid_types = all(isinstance(s, (str, bytes, bytearray))
                         for s in (a, ) + p)
       if valid_types:
           # Must have a mixture of text and binary data
           raise TypeError("Can't mix strings and bytes in path "
                           "components.") from None
       raise
   return path

Darüber hinaus ist es möglich, nur die angegebenen Informationen anzuzeigen, indem ** magische Befehle ** wie "% pdoc", "% pdef", "% psource" und "% pfile" verwendet werden.

Der magische Befehl wird später erklärt.

In [9]: %pdoc os.path.join
Class docstring:
   Join two or more pathname components, inserting '/' as needed.
   If any component is an absolute path, all previous path components
   will be discarded.  An empty last part will result in a path that
   ends with a separator.
Call docstring:
   Call self as a function.
In [10]: %psource os.path.join
def join(a, *p):
   """Join two or more pathname components, inserting '/' as needed.
   If any component is an absolute path, all previous path components
   will be discarded.  An empty last part will result in a path that
   ends with a separator."""
   sep = _get_sep(a)
   path = a
   try:
       for b in p:
           if b.startswith(sep):
               path = b
           elif not path or path.endswith(sep):
               path += b
           else:
               path += sep + b
   except TypeError:
       valid_types = all(isinstance(s, (str, bytes, bytearray))
                         for s in (a, ) + p)
       if valid_types:
           # Must have a mixture of text and binary data
           raise TypeError("Can't mix strings and bytes in path "
                           "components.") from None
       raise
   return path

Magischer Befehl, oh magischer Befehl. Wird das dein Leben verbessern?

Trotz des bisherigen Inhalts hoffe ich, dass Sie die Bequemlichkeit von IPython erkannt haben. Sie können es jedoch noch bequemer verwenden, indem Sie die magischen Befehle kennen, die wir einführen werden.

Magic-Befehle sind Befehle, die in der IPython-Shell verwendet werden können und grob in die folgenden zwei Typen eingeteilt werden.

Beispielsweise kann der Befehl "% timeit" die Ausführungszeit messen.

In [1]: %timeit range(1000)
1000000 loops, best of 3: 804 ns per loop

Dies ist ein mehrzeiliges Muster.

In [1]: %%timeit x = range(10000)
   ...: max(x)
   ...:
1000 loops, best of 3: 963 µs per loop

Darüber hinaus stehen die folgenden integrierten Befehle zur Verfügung.

--Code bezogen %run, %edit, %save, %macro, %recall

Sie können den magischen Befehl mit % quickref überprüfen. Lassen Sie uns also sehen, was der Befehl bedeutet und welche anderen Befehle verfügbar sind.

Ausführen und debuggen

Schauen wir uns den magischen Befehl etwas genauer an.

Verwenden Sie den magischen Befehl % run, um Ihr bevorzugtes Python-Skript auszuführen und die Daten direkt in den interaktiven Shell-Namespace zu laden. Im Gegensatz zu "Import" wird es bei jeder Ausführung neu geladen, sodass alle Änderungen am Skript sofort übernommen werden.

Der Befehl % run verfügt über einige spezielle Optionen, die Option -t kann verwendet werden, um die Skriptausführung zeitlich festzulegen, und die Option -d kann verwendet werden, um sie im pdb-Debugger zu starten.

Wenn während der Skriptausführung eine Ausnahme auftritt, können Sie pdb sofort starten und debuggen, indem Sie den Befehl % debug ausführen. Wenn Sie pdb automatisch starten möchten, wenn eine Ausnahme auftritt, können Sie das Verhalten des automatischen pdb-Starts mit dem Befehl % pdb umschalten.

Egal wie viel Geschichte ich verfolgt habe, ich habe dich nie scheinen sehen. Natürlich von nun an.

IPython speichert einen Verlauf der Ein- und Ausgänge. Dies ist auch sehr praktisch.

Der einfachste Weg, den Verlauf zu verfolgen, ist die Verwendung der Cursortasten . Es gibt jedoch auch andere, komplexere Möglichkeiten, auf den Verlauf zuzugreifen.

Der Eingabe- / Ausgabeverlauf wird in den Variablen "In" und "Out" mit der Eingabeaufforderungsnummer als Schlüssel gespeichert, sodass Sie später darauf zurückgreifen können.

In [1]: pig = 'boo'

In [2]: pig.capitalize()
Out[2]: 'Boo'

In [3]: pig.upper()
Out[3]: 'BOO'

In [4]: In[3]
Out[4]: 'pig.upper()'

In [5]: Out[3]
Out[5]: 'BOO'

Außerdem werden die letzten drei Ausgänge unter den Namen "", "", "" gespeichert, damit sie leichter zugänglich sind.

Sie können auch mit dem Befehl % history auf den Verlauf verweisen.

Es ist praktisch, System-Shell-Befehle von IPython, diesem Mist, verwenden zu können.

System-Shell-Befehle sind einfach zu verwenden. Stellen Sie ihnen einfach ! Vor und führen Sie sie aus.

In [1]: !ping 2ch.net
PING 2ch.net (206.223.154.230): 56 data bytes
64 bytes from 206.223.154.230: icmp_seq=0 ttl=50 time=118.838 ms
64 bytes from 206.223.154.230: icmp_seq=1 ttl=50 time=118.843 ms
64 bytes from 206.223.154.230: icmp_seq=2 ttl=50 time=118.642 ms
64 bytes from 206.223.154.230: icmp_seq=3 ttl=50 time=118.378 ms

Darüber hinaus können Sie das Ausgabeergebnis wie folgt in der Liste erfassen.

In [16]: files = !ls

Referenz

Ich denke, der letzte war fast wie eine Übersetzung des Tutorials. http://ipython.org/ipython-doc/stable/interactive/tutorial.html

Recommended Posts

Verwendung von IPython
Verwendung von IPython Notebook
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
Verwendung des IPython-Debuggers (ipdb)
Verwendung von Qt Designer
[IPython] Freigeben eines IPython-Notizbuchs
Verwendung der Suche sortiert
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
Verwendung des Generators
Verwendung von FastAPI ③ OpenAPI
Wie benutzt man Python Argparse?
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv
Verwendung von Redispy-Wörterbüchern
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Go] Verwendung von "... (3 Perioden)"
So bedienen Sie GeoIp2 von Django
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
[Einführung] Verwendung von open3d
Wie benutzt man Python Lambda?
So verwenden Sie Jupyter Notebook
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
So verwenden Sie Google Colaboratory
Verwendung von Python-Bytes
Verwendung der Zip-Funktion