Zugschlus, German
@Zugschlus@zug.network avatar

Welches Buch sollte ich lesen wenn ich Dinge über modernes Python lernen möchte?

Mir muss niemand mehr erklären, was eine Variable, eine Klasse, eine Methode ist, was der Unterschied zwischen call-by-value und call-by-reference ist, aber ich würde gerne mal die Eigenheiten von python erklärt bekommen die man wissen sollte um guten Code zu schreiben.

jochen,
@jochen@wersdoerfer.de avatar

@Zugschlus

Das beste "intermediate" Python-Buch, das ich kenne ist:
Fluent Python

Etwas älter, aber auch nicht schlecht:
Effective Python

Das hier ist eher eine Referenz, aber auch gut:
Python Distilled

Wenn es eher Richtung Softwarearchitektur gehen soll, dann das hier:
Architecture Patterns with Python

Data Science / Machine Learning ist natürlich nochmal eine ganz eigene Welt 😃.

ArnimRanthoron,
@ArnimRanthoron@ruhr.social avatar

@Zugschlus
Vielleicht hat @piko eine Idee?

piko,
@piko@chaos.social avatar

@ArnimRanthoron @Zugschlus Da bin ich der falsche.

ujay68,
@ujay68@mastodon.world avatar

@Zugschlus Bin neulich auf Luciano Ramalho: „Fluent Python“ gestoßen, das in diese Richtung klang und mich deshalb interessiert hat. Kann aber noch nichts Konkretes dazu berichten. Kennt das jemand zufällig?

jochen,
@jochen@wersdoerfer.de avatar

@ujay68 @Zugschlus Das ist super. In der zweiten Ausgabe sind auch die neuen Sprachfeatures bis Python 3.10 enthalten.

jason,
@jason@click.ba.it avatar

@Zugschlus vielleicht hat @dunkelstern einen Tipp

dunkelstern,
@dunkelstern@kampftoast.de avatar

@jason @Zugschlus was is das budget und wieviel Zeit hast du? Python in a Nutshell is immer noch das kompletteste ding, aber ist halt eine Komplettreferenz und 600 Seiten stark. Sonst: Python for Programmers (auch O'Reilly) hat den Fokus auf Standard Library und Beispielcode (hab ich aber selber nicht gelesen, nur gutes gehört drüber) aber auch ein Klopper

jochen,
@jochen@wersdoerfer.de avatar

@dunkelstern @jason @Zugschlus Ja, Python in a Nutshell ist super. Da ist ja auch gerade (2023) eine neue Ausgabe erschienen. Habe ich hier rumliegen, aber noch gar nicht reingeschaut - danke für die Erinnerung 😁.

Python for Programmers kenne ich nicht. Aber wenn ich so das Inhaltsverzeichnis überfliege, sieht das doch eher nach Data Science etc. aus. Da würde ich aber andere Bücher empfehlen.

Zugschlus,
@Zugschlus@zug.network avatar

@dunkelstern @jason Python for Programmers klingt gut.

Zugschlus,
@Zugschlus@zug.network avatar

@dunkelstern @jason Ist aber von 2019, ist die Sprache da aktuell genug?

dunkelstern,
@dunkelstern@kampftoast.de avatar

@Zugschlus @jason Python 3 ist ab 3.5 bis zum heutigen 3.12 basically gleich was die Grundlagen angeht. Es gibt ein paar Dinge die verbessert wurden (f-Strings, Type annotations) oder hinzu kamen (AsyncIO, Data classes) aber das würde mich als Einsteiger nicht davon abhalten. Die Erweiterungen sind entweder simpel zu verstehen (f-Strings, Data classes), komplett optional (type annotations) oder sowieso ein eigenes Buch wert (AsyncIO).

jochen,
@jochen@wersdoerfer.de avatar

@dunkelstern @Zugschlus @jason Öh, ich weiß ja nicht 😀- walrus, structural pattern matching, peg parser (verschachtelte f-strings, geklammerte context manager) und bei den type annotations ist eigentlich bei jeder Version ordentlich was dazugekommen (static duck typing wie in go). Also ich finde da hat sich auch durchaus was an der Sprachsyntax getan. Aber klar, ist halt die Frage wie sehr es sich lohnt, da in die Details zu gehen..

dunkelstern,
@dunkelstern@kampftoast.de avatar

@jochen @Zugschlus @jason ja aber der parser kram verbessert zwar performance aber normalerweise interagierst du ja nicht direkt damit. Pattern matching seh ich noch nirgends in verwendung. Und ich liebe das typing zeug, endlich nicht mehr raten, aber für das verständnis von python an sich ist es erstmal egal und wenn man sich große frameworks anschaut wie z.b. django sieht man noch nirgends type annotations direkt im code, lediglich als stub files…

jochen,
@jochen@wersdoerfer.de avatar

@dunkelstern @Zugschlus @jason Jo, sind schon eher nischigere Fälle was die Syntaxänderungen angeht (ausgenommen pattern matching). Bei den type annotations bin ich mir noch nicht wirklich sicher, ob das mehr nutzt als schadet, aber da sind halt in jeder neuen Python Version mehrere Dinge dazugekommen. D.h. code von heute sieht da schon eher anders aus als der von vor ein paar Jahren. Es sei denn man schreibt sowas wie Django, dann muss man eben auch sehr alte Python Versionen unterstützen..

dunkelstern,
@dunkelstern@kampftoast.de avatar

@jochen @Zugschlus @jason wenn man irgendwie reinkommen will und libraries und “typischen python code” lernen will bietet es sich an das zu lernen was grad in verwendung ist und nicht das was man verwenden könnte wenn man bleeding edge auf der aktuellsten version rumkrebst. Und dafür ist 2019 noch nah genug dran, soo schnell schreibt man nicht die ganze python landschaft um und wenn man auf was neues stößt kann man immer noch nachlesen.

jochen,
@jochen@wersdoerfer.de avatar

@dunkelstern @Zugschlus @jason Hmm, 2019 ist Python 3.8 - das hat dieses Jahr end of life. Also ja, ich sehe auch, dass viele Leute ältere Python Versionen verwenden. Würde mich mal interessieren, was da die wichtigsten Gründe sind. Habe das ehrlich gesagt nie so recht nachvollziehen können.

dunkelstern,
@dunkelstern@kampftoast.de avatar

@jochen @Zugschlus @jason meistens wohl die versionen von python die halt bei ner linux distri dabei sind. Grad wenn man auf debian, rhel, suse oder ubuntu festhängt wegen supportverträgen oder Anforderungen vom Kunden. Ich hab ne weile als externer für BCG gearbeitet, da kriegst du das OS halt vorgeschrieben weil der Konzern einen Wartungsvertrag hat. Da haut dir das security team deinen kram um die ohren wenn du ne neuere version “parallel” installierst.

jochen,
@jochen@wersdoerfer.de avatar

@dunkelstern @Zugschlus @jason Bin da eher bei "The first rule of Python is: Don't use your preinstalled system Python!". Insbesondere für Debian / Ubuntu, da ist das nochmal extra kaputt 😬. Und dass das, was technisch besonders schlecht funktioniert, die Haftung besonders gut fernhält, wird ja wohl hoffentlich auch nicht für immer gelten. Aber ja, vielleicht bin ich da auch etwas naiv. Ich finde das jedenfalls deutlich einfacher, da kontinuierlich dran zu bleiben…

Zugschlus,
@Zugschlus@zug.network avatar

@jochen
ich bin da eher bei "ich benutze das was mein Debian mitbringt". Python ist entgegen der Meinung mancher Entwickler kein Selbstzweck, das hat ins System zu passen.
@dunkelstern @jason

jochen,
@jochen@wersdoerfer.de avatar

@Zugschlus @dunkelstern @jason Für Ubuntu gibt es ja auch noch https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa - vielleicht gehen die auch für Debian. Für Debian kompiliere ich Python üblicherweise selbswt auf der Maschine aus den Sourcen. Klingt komisch, ist aber das, was praktisch am wenigsten Probleme macht. Gut, wenn nur ein bisschen Python gebraucht wird und das nicht der Hauptzweck ist, ok. Ansonsten ändert man ja je nach Zweck sogar, wie man Abhängigkeiten installiert (web -> pip, data scienc -> conda).

Zugschlus,
@Zugschlus@zug.network avatar

@jochen @dunkelstern @jason Wir haben unterschiedliche Arbeitsmethode. Ich bin der Admin der die Entwickler ans Kreuz schlägt wenn sie etwas so wichtiges wie python selbst installieren.

Das ist einfach ein Support-Albtraum. Dafür hat keine Organisation genug Leute.

Debian stable hat python 3.11, das MUSS einfach reichen, und Entwickler die sich nicht für das interessieren was das Projekt vor drei Wochen releast hat weil es längst was neueres und tolleres gibt haben in meine Umgebung nichts zu suchen.

Sorry für die deutlichen Worte, aber Software an der Distribution vorbei installieren geht in meiner Welt gar nicht, das ist ein absoluter Trigger für mich.

jochen,
@jochen@wersdoerfer.de avatar

@Zugschlus @dunkelstern @jason Also ich lasse das System-Python schon intakt, aber für meine Dienste nehme ich halt das Selbstkompilierte. Ansonsten gilt meiner Erfahrung nach zunehmend: You build it, you run it! 3.11 ist schon nicht schlecht, aber neben der Aktualität ist da auch die Aufteilung der Standardbibliothek etc problematisch. Und da wo ich alte Python-Versionen sehe, sehe ich meist auch alte Distributionsversionen. Bin mir auch da nicht sicher, ob die vom Nicht-Updaten besser werden.

Zugschlus,
@Zugschlus@zug.network avatar

@jochen @dunkelstern @jason Alte Distributionsversionen kommen in unterschiedlichen Gestanksrichtungen. Manche davon sind wirtschaftlich sinnvoll. Natürlich bei weitem nicht alle.

Im Weiteren verstehe ich nicht warum Du gerade Debian hier beim Namen nennst, wir releasen seit bald zehn Jahren wie ein Uhrwerk. In den Nullerjahren haben wir diejenigen verloren denen wir zu selten releast haben, jetzt verlieren wir diejenigen denen "alle zwei Jahre" zu oft ist.

Dabei kannst Du bei uns wirklich alles haben, bis hin zum fünf Jahre alten oldoldoldstable mit halbwegs vollständigem Securitysupport.

Merke, Entwickler: Nicht alle Ops-Leute sind auf der Brennsuppe dahergeschwommene Vollidioten. Sie mögen einen anderen Blick auf die Dinge haben als durch die Entwicklerbrille, aber meist haben sie genau so gute Gründe für ihre Arbeitsweise wie Du.

Und wir können nicht ohne Euch, und auch nicht andersrum.

jochen,
@jochen@wersdoerfer.de avatar

@Zugschlus @dunkelstern @jason Klar, ich wollte Debian hier auch gar nicht als irgendwie schlecht darstellen. Ich sehe ja durchaus auch alte Versionen anderer Distros. Es ist nur so: da ich Debian gerne verwende, schmerzt ein drückender Python-Schuh halt besonders.

Was an Debian super ist: Abhängigkeiten wie pandas etc können einfach binär installiert werden. Bei NixOS ist man da dann schnell dabei, selbst zu kompilieren. Bei Alpine dann sogar alles wegen libc -> riesige images.

isotopp, (edited )
@isotopp@chaos.social avatar
  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • tacticalgear
  • DreamBathrooms
  • ethstaker
  • InstantRegret
  • Youngstown
  • magazineikmin
  • osvaldo12
  • slotface
  • khanakhh
  • rosin
  • kavyap
  • everett
  • thenastyranch
  • ngwrru68w68
  • megavids
  • GTA5RPClips
  • cisconetworking
  • mdbf
  • cubers
  • Durango
  • anitta
  • modclub
  • normalnudes
  • tester
  • Leos
  • provamag3
  • JUstTest
  • lostlight
  • All magazines