Zum Inhalt springen

Python: Unterschied zwischen den Versionen

Aus Martins Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 8: Zeile 8:
* [[Übungen]] a.k.a. exercises. Hier finden sich Projekte, die von den Kursteilnehmern wenig Spezialwissen erfordern und damit auch ohne Unterstützung zu bearbeiten sein sollten.
* [[Übungen]] a.k.a. exercises. Hier finden sich Projekte, die von den Kursteilnehmern wenig Spezialwissen erfordern und damit auch ohne Unterstützung zu bearbeiten sein sollten.
* [[Ressourcen]] a.k.a resources. Nützliche Links und Zusatzwissen.
* [[Ressourcen]] a.k.a resources. Nützliche Links und Zusatzwissen.
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 oft unverzichtbar. In den Projekt-Kursen kann es allerdings Ausnahmen geben. So hat Python viele Sprachelemente und Standard-Module, die wir nicht alle behandeln können. Trotzdem muss man sie als ernsthafter Python Entwickler kennen.


==Python Themen außer Reichweite (beyond scope)==
==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.
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 enthält viele Sprachelemente und Standard-Module, die wir nicht alle behandeln können. Trotzdem muss man sie als ernsthafter Python Entwickler kennen.
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:
 
Für die Sprache selbst beschränken wir uns wie folgt:


{| class="wikitable" style="margin:auto"
{| class="wikitable" style="margin:auto"
Zeile 22: Zeile 18:
! Thema !! Wir beschränken uns auf
! Thema !! Wir beschränken uns auf
|-
|-
| Basis-Datentypen|| bool, int, float, str
| Einfache Datentypen|| bool, int, float, str
|-
|-
| Zusammengesetzte Datentypen || tuple, list, set, dict (inkl. comprehensions)
| Zusammengesetzte Datentypen || tuple, list, set, dict (inkl. comprehensions)
Zeile 35: Zeile 31:
|-  
|-  
|Sprachkonstrukte zur Kapselung || Funktionen (def) und Klassen (class)
|Sprachkonstrukte zur Kapselung || Funktionen (def) und Klassen (class)
|}
<nowiki>*)</nowiki> 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 [https://pygame.org Pygame] und die [https://matplotlib.org Matplotlib] als separat zu installierende Module.
Wer mehr über Python lernen will, schaue sich tiefer gehende Bücher (z.B. von Mark Lutz oder [https://openbook.rheinwerk-verlag.de/python dieses]) bzw. YouTube Videos an oder auch die [https://python.org/docs Python-Original-Dokumentation]! Achtung: Letztere kann für Anfänger leicht überwältigend wirken!
Zum Umfeld der Python-Programm-Entwicklung gehören folgende Themen, die wir nicht adressieren können:
{| class="wikitable" style="margin:auto"
|-
! 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.
|-
| [https://de.wikipedia.org/wiki/Project_Jupyter 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 [https://docs.python.org/3/library/typing.html Type-hinting], um diesen Problemen zu entgehen.
|-
| Source Code Versionierung || Ohne die [https://de.wikipedia.org/wiki/Versionsverwaltung Versionierung] des Quellcodes z.B. mit [https://de.wikipedia.org/wiki/Git Git] ist eine professionelle Software-Entwicklung undenkbar.
|-
| Automatisches Testen || Ohne automatische Tests ist eine professionelle Software-Entwicklung undenkbar. Siehe [https://docs.python.org/3/library/unittest.html#module-unittest unittest] und [https://en.wikipedia.org/wiki/Pytest 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.
|-
| Modulariserung / 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.
|}
|}

Version vom 6. Oktober 2025, 13:58 Uhr

Meine Python-Kurse

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 Seiten bei wikidot.com und zwar separat für die VHS und Schulen. Beide verweisen auf die nachfolgend beschriebenen Seiten.

Achtung: Die unten verlinkten Seiten stellen Kopien der entsprechenden Seiten unter tuepy.wikidot.com dar! Für eine unbestimmte Zeit sollen beide parallel verfügbar sein.

  • Projekte a.k.a. projects. Diese Projekte sind für den Einsatz in den Kursstunden gedacht.
  • Übungen a.k.a. exercises. Hier finden sich Projekte, die von den Kursteilnehmern wenig Spezialwissen erfordern und damit auch ohne Unterstützung zu bearbeiten sein sollten.
  • Ressourcen a.k.a resources. Nützliche Links und Zusatzwissen.

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 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, dir, set, len, abs, max, min, enumerate, input, open, print, range, sum, zip
Built-In Module turtle, random, 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!

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.
Modulariserung / 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.