Lambda-Ausdrücke bei Iteratoren – der aktuelle Tipp aus meinem Tutorial zu Python

Heute waren die Kollegen bei LinkedIn Learning aber verdammt früh schon am Arbeiten, denn bereits vor 8:00 Uhr ist mein wöchentlicher Entwickler-Tipp zu Python schon veröffentlicht worden. Im aktuellen Tipp nehme ich mir den Einsatz von Lambda-Ausdrücken bei Iteratoren vor. Da zeigt sich eine der ganz großen Stärken von Python, denn diese Syntaxkonstruktion ist immens effizient.

»Herzlichen Glückwunsch! Dein Kurs gehört zu den beliebtesten Kursen des Jahres!«

Das war der Betreff der Mail aus Graz von LinkedIn Learning (LiL), die ich gerade bekommen habe. Inhalt war die Mitteilung, dass mein Kurs Python lernen vom 1.9. bis 15.10.2021 freigeschaltet ist und in der Kampagne »Beliebteste Kurse auf LinkedIn Learning« für den deutschsprachigen Raum vorgestellt wird. Na, da freue ich mich doch wie Bolle 🙂

Hier ist ein kurzer Abstract zu der besagen Kampagne von LiL:

Die Kampagne im Überblick

Wir befinden uns mitten im #GreatReshuffle, einer Zeit, in der Berufstätige ihre Karriere mehr denn je selbst in die Hand nehmen und sich in ihren aktuellen Unternehmen und in neuen Unternehmen neu positionieren. Deshalb sind wir besonders begeistert, nun bereits zum fünften Mal die jährliche Liste der beliebtesten Kurse bekanntzugeben. Damit helfen wir Lernenden, die richtigen Kompetenzen zu erwerben, um ihren nächsten Karrieresprung vorzubereiten.

Mehr als 5 Millionen Berufstätige haben die 20 beliebtesten Kurse dieses Jahr angesehen. Im Vergleich zum Vorjahr wurden weltweit 53% mehr Stunden für das Lernen aufgewendet. Um unseren Lernenden dabei zu helfen, die Kompetenzbereiche zu entdecken, die sie auf der Karriereleiter voranbringen, haben wir deinen Kurs bis zum 15. Oktober freigeschaltet.

 

Doppelschlag

Dieser Mittwoch bietet Anlass zur doppelten Freude :-).

  1. Mein regelmäßiger wöchentlicher Entwickler-Tipp zu Python ist da und behandelt diese Woche das Top-Level-Script-Environment. Dabei geht es darum, wie man die oberste Ebene einer Python-Anwendung zur Laufzeit identifizieren und wie man mit einigen magischen Elementen das Verhalten beim Aufruf steuern kann.
  2. Der zweite Anlass der Freude 😉 ist, das wieder einmal ein Buch bzw. Schulungsheft von mir erschienen ist. Beim Herdt-Verlag veröffentliche ich ja seit mehreren Jahren regelmäßig solche Schulungsunterlagen oder lektoriere manchmal auch fachlich andere Unterlagen. Einige Unterlagen sind dabei von Grund auf von mir, aber diverse habe ich irgendwann übernommen und aktualisiert.
    Das gerade erschienene Buch bzw. Schulungsheft zu Joomla! 4 ist so eines, was ich vor vielen Jahren (2015) schon übernommen und damals auf die Version 3 aktualisiert hatte. Nun hat sich die Entwicklung von Joomla! 4 jedoch ewig hingezogen, aber Ende August ist die neue Version endlich erschienen und wir sind damit just-in-time mit dem Buch zu Joomla! 4 auf dem Markt. Natürlich habe ich mit Vorversionen von Joomla! 4 gearbeitet, aber die waren schon so gut wie fertig und bei der Überarbeitung habe ich gegengeprüft. Genaugenomen hatte ich schon 2020 mit der Überarbeitung begonnen, weil ich mit einer Fertigstellung von Joomla! 4 in dem Jahr fest gerechnet hatte. Schon da war das Projekt weit hinter der Roadmap zurück. Aber nachdem sich die Verzögerung in der Fertigstellung nicht mehr in Tagen oder Wochen und eigentlich auch nicht Monaten, sondern eigentlich nur in Jahren spezifizieren lies, habe ich Ende 2020 die Überarbeitung erst einmal eingestellt. Zumal die Vorversion zu dem Zeitpunkt auch noch unausgereift waren, wie mir bei der Arbeit damals deutlich wurde. Diesen Sommer hatte ich aber sowohl wieder Zeit und auch die Vorversionen von Joomla! waren endlich soweit, dass das Erscheinen der Finalversion greifbar wurde. Und so sind wir wie gesagt mit dem heutigen Tag mehr oder weniger just-in-time fertig geworden :-).

Das war es mal wieder

Ich bin fertig mit meiner Aufnahmesession für LinkedIn Learning. Ich habe ein Training rund um Neuheiten bei Java auf den neusten Stand gebracht, bei dem mittlerweile zwei Versionsupdates erfolgt sind, und ein vollkommen neues Training eingespielt. Dabei stehen Kryptografie und Steganografie mit Python sowie diverse Themen rundherum im Fokus.

In der letzten Zeit hatte ich oft Adaptionen von Trainings gemacht oder Trainings zu Themen, die von LiL an mich herangetragen wurden. Und natürlich meine Serie mit wöchentlichen  Entwicklers-Tipp zu Python.

Aber das neue Training ist vollkommen auf meinem Mist gewachsen. Ich hatte irgendwann die Idee, mich mit dem Thema aus Sicht von Python zu beschäftigen und dann aus Lust und Laune ein paar Scripts vor mich hinprogrammiert. Nachdem ich diese Scripts fertig hatte, kam mir die Idee, dass man daraus doch ein komplettes Training machen könnte. Mehr dazu kommt, wenn das Training produziert und veröffentlicht ist.

MRO

Auch wenn meine aktuelle Aufnahmesession für LinkedIn Learning noch am Laufen ist, erscheint dennoch regelmäßig mein wöchentlicher Entwickler-Tipp zu Python. Der aktuelle Tipp hat die Method Resolution Order oder kurz MRO zum Thema. Die Method Resolution Order bezeichnet die Reihenfolge, in der Python nach einer Methode in einer Hierarchie von Klassen sucht. Insbesondere spielt das eine wichtige Rolle im Zusammenhang mit der Mehrfachvererbung, wenn eine Methode in mehreren Superklassen zu finden ist. Mit MRO beziehungsweise Method Resolution Order bezeichnet man den Suchpfad von Python nach Methoden.

Start meiner neuen Videoaufnahmen

Müde bin ich, Kängeruh …

Ich bin schon gestern Abend ziemlich spät noch nach Eppstein gefahren, um dem befürchteten Verkehr heute morgen wegen des Zug-Streiks zu entgehen. Bereits vor 8:00 Uhr hebe ich dann heute mein Testvideo aufgenommen und zur Kontrolle hochgeladen. Wenn das Go aus Graz kommt, starte ich meine neue Aufnahmesession für LinkedIn Learning dann richtig.

Bis dahin gehe ich jetzt erst einmal einkaufen, um für die kommende Aufnahmewoche versorgt zu sein. Ich bin sowieso noch nicht richtig in Gang gekommen und ein kleiner Spaziergang tut da zudem gut.

Die Serie wird fortgesetzt

Wie bei regelmäßigen Ausstrahlungen von TV-Sendungen geht auch mein wöchentlicher Entwickler-Tipp zu Python bei LinkedIn Learning jede Woche „auf Sendung“. Fast immer am Mittwoch (wie heute), aber gelegentlich gibt es kleine Verzögerungen. Was aber irrelevant ist. Die Woche geht es darum, wie man innerhalb von Python-Klassen weitere Klassen deklarieren kann. Wie die meisten objektorienterten Programmiersprachen gestattet auch Python die Deklaration von sogenannten inneren oder eingebetteten Klassen (nested classes bzw. inner classes).

Ausführbare Programme mit PyInstaller – mein neuster Entwicklertipp

Mein wöchentlicher Entwickler-Tipp zu Python bei LinkedIn Learning kümmert sich darum, wie man aus Python-Skripten ausführbare Programme mit dem PyInstaller erstellt. Das erleichtert die Weitergabe, denn nicht in jedem Fall hat ein Anwender eine passende Python-Installation zur Verfügung und oft haben Scripts auch Abhängigkeiten. Da genügt es nicht, einfach nur das Script weiterzugeben, es müssen gegebenenfalls auf der Plattform des Anwenders auch Abhängigkeiten erfüllt sein. Und in diesem Fall macht es sehr viel Sinn, eine ausführbare Datei mit allen notwendigen Ressourcen zu erzeugen. Und PyInstaller ist ein Tool, womit man das machen kann. Es gibt dieses Tool für Windows aber auch Mac OS und Linux.

Schreibstube geschlossen

Ich bin mit den Aktualisierungen einer Schulungsunterlage als auch dem Buch erst einmal fertig. Ging schneller als erwartet. Es wird garantiert noch nachträgliche Korrekturen geben – vor allen Dingen beim Buch, das ich eben erst frisch abgegeben habe. Aber erst einmal ist die Schreibstube wieder geschlossen. Nächste Woche bereite ich neue Videoaufnahmen für LiL vor, aber vor deren Beginn steht noch in der übernächsten Woche eine C#-Schulung an. Wie im Moment immer remote.

Konstanten in Python als Entwickler-Tipp

Ausnahmsweise erst am Donnerstag – mein wöchentlicher Entwickler-Tipp zu Python. Dieses Mal geht es um Konstanten in Python. In Python gibt es zwar vordefinierte Konstanten, aber das Anlegen von eigenem Konstanten im klassischen Sinn ist nicht vorgesehen. Aber man kann etwa mit Tupeln und read-only-Properties feste Werte deklarieren, und diese sind auch noch viel flexibler, als klassische Konstanten.

Mehrfachdeklaration in Python

Diese Woche geht es beim Entwickler-Tipp zu Python um Mehrfachdeklaration in Python. Es kommt durchaus vor, dass man verschiedene Dinge im Quellcode mehrfach deklariert. Dann muss klar sein, was passiert. Wir schauen es in dem Tipp von LiL an, was in Python bei Klassen und Funktionen eine Mehrfachdeklaration für eine Auswirkung hat.

Die Sache mit dem W

Es ist Mittwoch und wenn nichts ausgewöhnliches dazwischen kommt, wird mein wöchentlicher Entwickler-Tipp zu Python bei LiL (LinkedIn Learning)  freigeschaltet. Die Woche betrachte ich die Dateierweiterung .pyw und den pythonw-Interpreter bzw. was die Unterschiede zu der Dateierweiterung .py und dem „normalen“ python-Interpreter sind.

Was gibt es zu importieren?

Die Woche bin ich an Aufnahmen für LinkedIn Learning (LiL). Das hat aber keinen Einfluss auf meine wöchentlichen erscheinenden Entwicklertipps der Woche zu Python. Diese Woche geht es um Details beim Import.

Die Aufnahmen laufen

 

Mittlerweile habe ich schon einige Videos aufgenommen und bereits eine Pause gebraucht. Bei meinen letzten Tripps nach Graz habe ich mir einmal einen Motorroller im Hotel geliehen und bin damals an einem freien Tag eine Tour rund um den Schöckl gefahren.

Bei einem anderen Graz-Besuch hatte ich mir im Hotel ein Fahrrad geliehen und die nahe Umgebung abgeklappert.

Zu Fuss gehe ich sowieso regelmäßig in die Stadt und auf den Schlossberg.

Auch wenn ich aus besagten Corona-Gründen in Eppstein und nicht in Graz bin, habe ich eben diese „Tradition“ direkt am ersten Aufnahmetag beibehalten und bin eine kleine Runde mit dem Rad über den Rettershof gefahren.

Ein uraltes Rad habe ich in Eppstein deponiert und dafür taugt das immer noch. Zwar kenne ich die ganze Gegend seit frühsten Kindertagen, aber es hat dennoch was von Kurzurlaub. Und macht die Birne wieder frei, für weitere Aufnahmen.

Eppsteiner Graz

Außerhalb von Corona-Zeiten wäre ich die Woche ziemlich sicher in Graz, um bei LinkedIn Learning (LiL)  neue Videos aufzunehmen. Ich wäre gestern Abend von FFM nach Graz geflogen (so, wie ich es über viele Jahre erst zu Video2Brain und dann eben LiL gemacht habe), hätte mich im Hotel eingecheckt und wäre jetzt so langsam ins Studio rüber gegangen – was vom Daniel aus nur ein paar Meter auf die andere Seite des Bahnhofs sind.

Aber wegen Corona sind weiter die Aufnahmen vor Ort unterbunden und so bin ich gestern am Abend in mein „Aufnahmestudio“ nach Eppstein gewechselt, habe dort alles eingerichtet, bereits das Probevideo aufgenommen und hochgeladen. Nun warte ich auf das virtuelle Go aus Graz und dann wird die Woche halt wieder in Eppstein statt in Graz aufgenommen.

So gerne ich auch in meinem Elternhaus und meiner alten Umgebung bin – wie einer meiner LiL-Trainerkollegen mir gegenüber schon mehrfach geäußert hat:

„Zu den Aufnahmen nach Graz kommen ist wie ein bisschen Urlaub. Man wird umsorgt, ist im Hotel untergebracht, kann nach den Aufnahmen die Gegend erkunden oder mit Kollegen losziehen und kommt einfach raus aus dem gewohnten Trott.“

Das geht auch mir jetzt seit 1,5 Jahren ab – denn so lange war ich schon nicht mehr in Graz.

Casting-Show

Die letzten zwei Tage habe ich mal wieder eine Online-Schulung gehalten. Thema war UML. Und als diese fertig war, war auch der regelmäßige Entwicklertipps der Woche zu Python bei LinkedIn Learning (LiL)  freigeschaltet. Thema diese Woche ist die Typumwandlung.

Let … it be

Bei meinem Online-Kursen zu JavaScript (JavaScript Grundkurs 1: Grundlagen und Syntax, JavaScript Grundkurs 2: Programmiertechniken und Frameworks und JavaScript: In HTML 5 arbeiten) für  LinkedIn Learning (LiL)  kam vor einiger Zeit von einem Anwender die Frage auf, warum ich die Anweisung let nicht behandle? Die Frage war berechtigt und ich habe ein Video für dieses Thema nachgereicht, was ja aufgrund der modernen Architektur der LiL-Lernplattform kein Problem ist. Wobei ich ursprünglich natürlich gewisse Gründe hatte, die Verwendung von let so stiefmütterlich zu behandeln. Denn die Unterstützung ist immer noch sehr eingeschränkt. Anyway – serverseitig ist let mittlerweile Standard und ganz moderne Browser unterstützen die Anweisung auch, so dass man – mit der nötigen Vorsicht auf Client-Seite – damit arbeiten kann.

Der Nachtrag wurde Anfang der Woche in das Training Grundkurs 2: Programmiertechniken und Frameworks als Aktualisierung eingefügt.

Immutable vs. Mutable

Same procedure as every ….

Mittwoch!

… James.

Im Rahmen meiner regelmäßen Veröffentlichungen eines  neuen Entwicklertipps der Woche zu Python für LinkedIn Learning (LiL)  geht es diese Woche um Immutable versus Mutable und was Python dabei im Hintergrund macht.

Tupel Um-Tupeln

In einigen Tagen geht es mit neuen Videoaufnahmen für LinkedIn Learning (LiL)  wieder los. Immer noch in Form von Home-Recording, aber es ist absehbar, dass ich auch irgendwann mal wieder nach Graz komme. Bis dahin wird jedoch noch einiges Wasser „die Bach runterfließen“ – ja die (!) Bach, was man als echter Hesse selbstverständlich sagt.  Und die Bach bringt Mitte jeder Woche ein Boot mit einem  neuen Entwicklertipp der Woche zu Python vorbei. Diese Woche behandle ich das Manipulieren von Tupeln. die ja „eigentlich“ immutable sind.

Zoom-Meeting mit Linkedin Learning direkt in der Natur

Anlässlich interner Umstrukturierungen in Graz bei LinkedIn Learning (LiL) gab es heute ein Abschieds-/Vorstellungs-Meeting auf Zoom. Da wollte ich auf jeden Fall teilnehmen, um mal wieder die Grazer Mann- bzw. Frauschaft und auch andere Trainer zu sehen. Wenn auch nur virtuell.

Nur wollte ich auch um die Zeit eine Radtour machen. Also habe ich beides kombiniert und dann am Alteburger Markt eine Pause gemacht, um auf einer Bank unter Bäumen per SmartPhone am Zoom-Meeting teilzunehmen. Tja – moderne Techniken machen es möglich. Unmöglich war allerdings die Hitze. Hab mich mit der Tour etwas übernommen.