Python: Unterschied zwischen den Versionen
Martin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Martin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 86: | Zeile 86: | ||
| Dokumentation || Beschreibungen von Funktionalität, innerem Aufbau, mathematische Hintergründe, Teststrategie von Software etc. sind im professionellen Umfeld unverzichtbar, erfordern aber eine eigenes Management und Infrastruktur. Hier kann man viel zum Gelingen des Produkts beitragen, aber auch viel unnötigen Ballast generieren. | | Dokumentation || Beschreibungen von Funktionalität, innerem Aufbau, mathematische Hintergründe, Teststrategie von Software etc. sind im professionellen Umfeld unverzichtbar, erfordern aber eine eigenes Management und Infrastruktur. Hier kann man viel zum Gelingen des Produkts beitragen, aber auch viel unnötigen Ballast generieren. | ||
|- | |- | ||
| | | Modularisierung / Pakete für große Apps || Wohl kaum eine professionelle Software findet in einem Modul Platz! Wir können uns aber darauf beschränken. | ||
|- | |- | ||
| Nebenläufigkeit / asynchrone / parallele Programm-Ausführung || Insbesondere für Web-basierte Programme ist dies wichtig. | | Nebenläufigkeit / asynchrone / parallele Programm-Ausführung || Insbesondere für Web-basierte Programme ist dies wichtig. | ||
Version vom 7. September 2026, 14:53 Uhr
Willkommen bei der Python-AG im Schuljahr 2026/7
Mein Name ist Martin Reiche und ich bin euer AG-Leiter und Betreuer. Ihr könnt mich zu allen Fragen rund um die AG per E-Mail erreichen unter tuepsky@gmx.de. Die Begriffe "AG" (Arbeitsgemeinschaft) und "Kurs" haben hier dieselbe Bedeutung. Manche sagen so, sie anderen so :-)
Die AG steht für alle Schülerinnen und Schüler in Tübingen offen. Veranstaltungsort wird vermutlich wieder das Wildermuth-Gymnasium sein.
Wer grundsätzlich Interesse an der AG im Schuljahr 26/27 hat, schreibe bitte eine E-Mail an tuepsky@gmx.de! Die verpflichtet euch zu nichts. Aber dann habe ich euch in jedem Falle auf dem Radar und kann euch rechtzeitig mit Informationen versorgen. Ich plane für den Anfang des Schuljahres wieder Info-Veranstaltungen, die ich dann hier rechtzeitig ankündigen werde!
Auf dieser, dieser und dieser Seite könnt ihr sehen, was in den vergangenen Jahren so lief. Demnächst wird an Euren Schulen auch Python gelehrt. Das ist eine erfreuliche Entwicklung. Doch niemand sollte auf die Idee kommen, hier eine Konkurrenz erkennen zu wollen! Dafür ist die Welt der Programmierung einfach viel zu groß, wie schon an dieser und dieser Projektliste zu erkennen. Außerdem profitiert man immer auch von einer Wiederholung, falls sie denn auftritt. Und schließlich gilt: Auf zwei Rädern fährt es sich leichter als auf einem!
Meine Python-Kurse
Wichtige Informationen für jetzige und zukünftige Teilnehmer*innen finden sich hier:
- Projekte - Diese Projekte sind für den Einsatz in den Kursstunden gedacht.
- Übungen - Hier finden sich Projekte, die von den Kursteilnehmern wenig Spezialwissen erfordern und damit auch ohne Unterstützung zu bearbeiten sein sollten.
- Ressourcen - Nützliche Links und Zusatzwissen.
Siehe auch meine Homepage!
Anmerkung: In den vergangenen Jahren habe ich sowohl an der VHS Tübingen als auch an Tübinger Gymnasien Python-Kurse gegeben. Zur Information der Kursteilnehmer dienten mir damals Seiten bei wikidot.com und zwar separat für die VHS und Schulen. Sie werden aber nicht mehr aktualisiert!
Python Themen außer Reichweite (beyond scope)
Im Anfänger-Kurs kommen viele Themen mit Python-Bezug aus Zeitgründen mit Absicht nicht vor, sind aber für die professionelle Software-Entwicklung meist unverzichtbar. In den Projekt-Kursen kann es allerdings Ausnahmen geben.
Python-Grundlagen betreffend
Python enthält viele Sprachelemente und Standard-Module, die wir nicht alle behandeln können. Trotzdem muss man sie als ernsthafter Python Entwickler kennen. Für die Sprache selbst bedeutet dies:
| Thema | Wir beschränken uns auf |
|---|---|
| Einfache Datentypen | bool, int, float, str |
| Zusammengesetzte Datentypen | tuple, list, set, dict (inkl. comprehensions) |
| Verzweigungen | if / elif / else, match / case, try / except * |
| Schleifen | for, while * |
| Built-In Funktionen | bool, int, float, str, list, set, len, abs, max, min, enumerate, input, open, print, range, sum, zip |
| Built-In Module | turtle, random, math, time, tkinter, os |
| Sprachkonstrukte zur Kapselung | Funktionen (def) und Klassen (class) |
*) Da gibt's auch nicht mehr!
In den bisherigen Durchläufen des Anfänger-Kurses konnten wir uns eine Diskussion des Laufzeit-Objekt-Modells ersparen. (Variablen-Namen verweisen auf Objekte, die durch Typ, Wert und ID gekennzeichnet sind. Bei Funktionsaufrufen werden Referenzen auf diese Objekte übergeben etc.)
Ebenso verwenden wir nur Pygame und die Matplotlib als separat zu installierende Module.
Wer mehr über Python lernen will, schaue sich tiefer gehende Bücher (z.B. von Mark Lutz oder dieses) bzw. YouTube Videos an oder auch die Python-Original-Dokumentation! Achtung: Letztere kann für Anfänger leicht überwältigend wirken!
Andere Themen mit Python-Bezug
Zum Umfeld der Python-Programm-Entwicklung gehören folgende Themen, die wir nicht adressieren können:
| Thema | Kommentar |
|---|---|
| Professionelle Entwicklungsumgebungen | z.B. PyCharm, Visual Studio Code. Für unsere Zwecke stellt Thonny den besten Kompromiss zwischen leichter Erlernbarkeit und Benutzbarkeit einerseits und Leistungsfähigkeit andererseits dar. |
| Jupyter Notebook | Eine sehr verbreitete interaktive Programmierumgebung hauptsächlich für komplexe Datenanalyse z.B. in der KI, Gen-Analyse (Biologie) oder auch Astronomie. |
| Python type hinting | Python Variablen können auf beliebige Datentypen verweisen. Das macht Python-Programme, besonders Funktionsaufrufe, fehleranfällig. Darum verwenden alle Profis das sogenannte Type-hinting, um diesen Problemen zu entgehen. |
| Source Code Versionierung | Ohne die Versionierung des Quellcodes z.B. mit Git ist eine professionelle Software-Entwicklung undenkbar. |
| Automatisches Testen | Ohne automatische Tests ist eine professionelle Software-Entwicklung undenkbar. Siehe unittest und Pytest. |
| Pakete wie numpy, pandas, scipy | Beinahe alle professionelle Anwendungen im mathematisch-naturwissenschaftlichen Bereich nutzen diese Pakete. |
| Dokumentation | Beschreibungen von Funktionalität, innerem Aufbau, mathematische Hintergründe, Teststrategie von Software etc. sind im professionellen Umfeld unverzichtbar, erfordern aber eine eigenes Management und Infrastruktur. Hier kann man viel zum Gelingen des Produkts beitragen, aber auch viel unnötigen Ballast generieren. |
| Modularisierung / Pakete für große Apps | Wohl kaum eine professionelle Software findet in einem Modul Platz! Wir können uns aber darauf beschränken. |
| Nebenläufigkeit / asynchrone / parallele Programm-Ausführung | Insbesondere für Web-basierte Programme ist dies wichtig. |
| Software-Architekturen | Sobald die Software größer wird, muss man sich um die globalen Strukturen Gedanken machen. Darum ist Software-Architektur auch eine eigene Disziplin. |
| Virtual environments (venv) | Professionelle Software-Entwicklungsumgebungen bzw. -Produkte müssen oft mit einer Mehrzahl von Versionierungsständen benutzter Pakete umgehen. Die daraus resultierenden Probleme adressieren diese virtuelle Umgebungen. |
| Reguläre Ausdrücke (regx) Pattern Matching | Leistungsfähige Erkennungsalgorithmen für Zeichenketten vermeiden in vielen professionellen Anwendungen die Neuerfindung des Rades. |