IPython?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

Hallo Leute,

eine gefühlte Ewigkeit ist es her, dass ich hier aktiv war. Nun, in einigen YouTube-Videos sehe ich, dass einige mit IPython arbeiten. Ich weiß, dass dadurch ein interaktives Arbeiten gewährleistet werden soll. Jedoch verstehe ich den Sinn immer noch nicht ganz. Also, in meinem Projekt schreibe ich die Quelltexte in Sublime Text. Das Programm wird dann unter CMD mit dem Befehl "Python MyScript.py" ausgeführt. Etwaige Fehler wersen dann bei mir im CMD angezeigt. Und wenn ich kurz interakiv arbeiten will, gebe ich in meiner CMD "Python" ein und bin schon in der IDE. Worauf will ich hinaus? Wenn ich meine Arbeitsweise mit Sublime Text und CMD betrachte, frage ich mich, weshalb viele IPython heranziehen. Übersehe ich da etwas.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Die IPython Konsole ist eine gute Zwischenlösung zwischen kompletter Programmausführung und dem Python REPL.
Man hat einfach nur ein weiteres Werkzeug um die Aufgabe zu lösen.
IPython kann und soll kein Ersatz für einen guten Codeeditor sein.

Das schöne an IPython ist, dass nach Ausführung einer IPython Zelle alle Objekte mit ihren aktuellen Werten abrufbar sind.
Man kann quasi im Programmablauf stoppen und spontan Variablen ausgeben ändern und experimentieren.

Besonders bei der Arbeit mit großen Datenmengen (numpy, pandas, matplotlib, ...) ist IPython sehr flexibel. Man kann sich ja direkt mal einen Plot erstellen und die Daten analysieren.

Ich persönlich bevorzuge allerdings Jupyter
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Um die Vorzüge der interaktiven Codeentwicklung kennen zu lernen, muss man das einfach auch mal selber machen um sich eine eigene Meinung bilden zu können.
Ich arbeite im DataScience / Machine Learning zu 95% mit Jupyter Notebooks, früher per JupyterLab, mittlerweile über VSCode. Sehr praktische Kombination.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

Und ich dachte schon, ich gelte als Banause, wenn ich nur mit Sublime Text und cmd arbeite.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Sophus hat geschrieben: Mittwoch 30. Juni 2021, 08:28 Und ich dachte schon, ich gelte als Banause, wenn ich nur mit Sublime Text und cmd arbeite.
Da bister leider auf dem Holzweg. Professionelle Softwareentwickler haben VS Code, und Sublime längst hinter sich gelassen:
https://youtu.be/X34ZmkeZDos

(Wieviele Monitore benutzt du eigentlich?)
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sophus: Mir würde ohne IPython einfach was fehlen. Python kann man interaktiv benutzen, und ich kann mir nicht vorstellen diesen Vorteil gegenüber Sprachen wo man immer erst ein längeres Stück Code kompilieren muss und das auch nur am Stück laufen lassen kann, statt nach jedem Schritt alles interaktiv untersuchen zu können, einfach so nicht zu nutzen.

Wie lernt man sonst neue Bibliotheken kennen, wenn man die nicht live ausprobieren kann und sich von allem was man da so ”in der Hand hat” Docstrings und Quelltext anschauen kann. Oder so Sachen wie Webscpraping — neue Seiten nicht interaktiv zu untersuchen, sondern dafür immer Code zu schreiben der alles von vorne bis hinten ausführt, statt das man “endlos” mit Zwischenergebnissen spielen kann, ist furchtbar umständlich.

Fehlersuche in dem man das Modul einfach mal importiert und die Funktionen mit verschiedenen Werten aufruft und schaut wie sich das verhält, ist auch nett.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@rogerb: Ich schaute mir mal eben Virtual Studio Code auf einige YouTube an. Das Programm sieht sehr aufwendig auf. Bei mir lädt sich Sublime Text sehr rasch. Bisher führe ich zwei Monitore. Aber ich muss gestehen, dass ich viel lieber mit einem Monitor arbeite. Gut, wenn ich höchst professionell arbeiten sollte, kann ich es verstehen, dass man mehrere Monitore benötigt.

@__blackjack__: Wenn ich Bibliotheken teste oder bestimmte Funktionen probiere, dann habe ich Sublime Text laufen, dort wird ein kurzer Quelltext geschrieben und im cmd bin ich schon an Ord und Stelle, wo die Script-Datei liegt.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Sophus, Oh, oh, 😨, das mit dem Video, den Monitoren und MS Word als IDE war ein Scherz, - ich hoffe du hast das nicht falsch verstanden.


Also, wenn dir dein Setup gefällt, und du der letzte Programmierer auf der Welt währest der so arbeitet, ... so what. Ist ja Geschmacksache!
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

rogerb: Keine Bange, ich benutze MS Word nicht als IDE ;) Nur wunderte ich mich, dass viele mit Iapython arbeiten und ich es nicht einmal "vermisse". Da fragte ich mich, ob ich da nicht was richtig mache. Für mich war und ist Sublime Text interessant, weil es schnell lädt. Wenn man bedenkt, dass ich einst mit Eclipse anfing, dann zu PyCharm rüberging und dann bei Sublime Text hängen blieb. Die erst beiden gegannten Umgebungsprogrammen waren mir einfach zu umfangreich und schwerfällig beim Laden und arbeiten.
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

Sophus hat geschrieben: Mittwoch 30. Juni 2021, 17:03 Wenn man bedenkt, dass ich einst mit Eclipse anfing, dann zu PyCharm rüberging und dann bei Sublime Text hängen blieb.
Dann bist du ja bald am Ziel: Bei vim :)

Und ansonsten kann ich mich __backjack__ nur anschließen. Der interaktive Python Interpreter (erst mal egal ob der reguläre, ipython, oder einer der anderen) ist für mich einer der großen Vorteile dieser Sprache, die man so interaktiv erkunden kann. Sowohl zum Lernen der Sprache, als auch später zum aktiven Arbeiten ist das aus meiner Sicht ein essentielles Werkzeug. Während ich entwickle, habe ich den meistens offen. Der reguläre Python-Interpreter ist ganz okay und ipython rüstet halt diverse Komfortfunktionen nach, die ihn noch angenehmer machen.. Andererseits: Ich selbst werde zum Beispiel mit jupyter notebook, das ja scheinbar eine große Anhängerschaft hat, nicht warm. Da hat wohl jede/r andere Vorlieben.
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sophus: Wenn Du einen kurzen Quelltext schreibst musst Du ja schon wissen was es da gibt und was Du schreiben willst. Und ich verwende auch Sublime-Text aber das man da den Quelltext von dem *was man an externen Bibliotheken* benutzt abfragen kann, kann sein, aber das habe ich noch nie verwendet.

Mal als Beispiel wenn man wissen möchte was `threading.Thread.run()` macht, als Dokumentation und wirklich *ganz konkret*, kann ich das in IPython so heraus finden:

Code: Alles auswählen

In [38]: import threading                                                       

In [39]: threading.Thread.run?                                                  
Signature: threading.Thread.run(self)
Docstring:
Method representing the thread's activity.

You may override this method in a subclass. The standard run() method
invokes the callable object passed to the object's constructor as the
target argument, if any, with sequential and keyword arguments taken
from the args and kwargs arguments, respectively.
File:      /usr/lib/python3.6/threading.py
Type:      function

In [40]: threading.Thread.run??                                                 
Signature: threading.Thread.run(self)
Source:   
    def run(self):
        """Method representing the thread's activity.

        You may override this method in a subclass. The standard run() method
        invokes the callable object passed to the object's constructor as the
        target argument, if any, with sequential and keyword arguments taken
        from the args and kwargs arguments, respectively.

        """
        try:
            if self._target:
                self._target(*self._args, **self._kwargs)
        finally:
            # Avoid a refcycle if the thread is running a function with
            # an argument that has a member that points to the thread.
            del self._target, self._args, self._kwargs
File:      /usr/lib/python3.6/threading.py
Type:      function
Wobei man hier jetzt am Endergebnis nicht die Tab-Autovervollständigung sieht, die auch sehr praktisch ist, vor allem wenn man sich in einem unbekannten Bibliotheken ”live” umschaut. Aber auch wenn man eigenen Code ausprobiert.

Es ist vielleicht auch ein bisschen Geschmackssache und/oder welche Aufgaben man konkret lösen muss/will, aber ich finde den interaktiven Modus eine tolle Sache und vermisse bei Sprachen die so etwas nicht haben, etwas.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten