ulipy hat geschrieben: ↑Sonntag 5. Dezember 2021, 08:51
Keine Frage, man muss __slots__ nicht nutzen müssen..
Verzeihung, aber nein: Du darfst __slots__ nicht benutzen. Jedenfalls noch nicht. Noch lange nicht. Wenn Du irgendwann in ein paar Jahren (!) mal Python so gut kannst, daß Du damit größere Datenmengen (im Sinne von: größer als ein Gigabyte Rohdaten) verarbeiten kannst und dabei feststellst, daß der Arbeitsspeicherbedarf zur Laufzeit Deines Python-Programms größer ist als das, was Du gerade an RAM zur Verfügung hast, dann, aber erst dann, darfst Du Dich daran erinnern, daß es da doch irgendwie so etwas wie __slots__ gegeben hat. Bis dahin solltest Du das Wort und dessen Existenz vergessen.
ulipy hat geschrieben: ↑Sonntag 5. Dezember 2021, 08:51
Was die Python-Liebe betrifft: so langsam macht das auch Spaß - die ersten Hürden sind jedoch recht hoch für mich
Die Hürden sind deswegen so hoch für Dich, weil Du versuchst, den vierten Schritt vor dem ersten zu machen. Der erste Schritt wäre, die Sprache und deren Anwendung zu verstehen, der zweite, danach PEP8 und PEP20 zu lernen und sie so lange sklavisch zu befolgen, bis Du kompetent und erfahren genug bist um zu wissen, wann und aus welchen guten Gründen Du davon abweichen darfst. Der dritte Schritt ist, Erfahrung mit der Sprache zu sammeln, bis Du Dich damit wirklich, wirklich sicher fühlst. Und erst dann folgt der Schritt, den Du jetzt schon vorweg zu nehmen versuchst, nämlich: Dir Gedanken über die Optimierungen und Eleganz zu machen.
Bis Du zum vierten Schritt kommst, wird zweifellos noch ein wenig Wasser den Rhein hinunter fließen, aber trotzdem möchte ich Dir dazu noch einen Ratschlag geben, den Du Dir jetzt bitte erst einmal nur notierst oder bookmarkst und erst dann wieder hervorholst, bis Du tatsächlich mal vor einem Python-Programm mit Optimierungsbedarf stehst. Manchen, ich vermute sogar vielen Python-Entwicklern passiert das übrigens niemals in ihrem Entwicklerleben... aber kommen wir zu meinem Ratschlag.
Die Optimierung von Programmen führt so gut wie immer zu Beeinträchtigungen, und zwar üblicherweise zunächst der Lesbarkeit und Verständlichkeit. Deswegen darf man Optimierungen nur dann machen, wenn sie sich tatsächlich auch lohnen, also: wenn die Vorteile der Optimierung deren Nachteile deutlich und klar überwiegen. Erschwerend kommt hinzu, daß so ein Compiler und / oder Interpreter bestimmte Optimierungen vornehmen und der Code, den Du in Deinem Editor siehst, nicht notwendigerweise mit dem Code identisch ist, der tatsächlich auf Deinem Rechner ausgeführt wird. Aus diesen Gründen gibt es zum Thema Optimerung drei wichtige Leitsätze:
- "Premature optimization is the root of all evil" (Donald E. Knuth)
- "Measure, don't guess" (Kirk Pepperdine)
- "Make it work, make it right, make it fast" (Kent Beck)
Im Kern sagen diese Leitsätze vor allem, daß blinde Optimierungen unsinnig und kontraproduktiv sind, die Optimierung eines Programms einer der letzten Schritte in der Entwicklung ist und dieser Schritt nur unter zwei Umständen unternommen werden sollte: erstens, wenn das Programm nicht die benötigte Performance aufweist oder zuviele Ressourcen verbraucht, und zweitens dann, wenn man gemessen hat, welche Teile des Programms überhaupt problematisch sind. Wer sich nicht daran hält, investiert nahezu immer am falschen Ende.
Nun, wie oben schon erwähnt: von der Optimierung von Programmen bist Du noch weit entfernt, also konzentrier' Dich jetzt erst einmal auf die Schritte eins, danach zwei, und dann drei (Du darfst die Schritte eins und zwei zwar kombinieren, aber Schritt zwei erschließt sich meistens erst dann, wenn man Schritt eins verinnerlicht hat.) Dabei wünsche ich Dir viel Spaß, Erfolg, und Glück.