Home

01 Quiz: Moderne Python-Implementierung

exercises quiz chapter-01 python uv virtual-environments

Anleitung


Frage 1: Pythons Dominanz

Was ist der HAUPTGRUND dafür, dass Python zur Nummer 1 Programmiersprache geworden ist?

A) Es ist die schnellste Programmiersprache
B) Es hat die beste Syntax für Anfänger
C) Es dominiert die lukrativen Bereiche Data Science, Machine Learning und AI, die jährlich 40-50% wachsen
D) Es ist die einzige kostenlose Programmiersprache

Antwort anzeigen

Richtige Antwort: C

Pythons Dominanz kommt von seiner überwältigenden Präsenz in Data Science, Machine Learning und AI—Bereichen, die schnell wachsen und hohe Gehälter bieten. Während Syntax wichtig ist, ist dies nicht der Hauptgrund für Pythons Dominanz.


Frage 2: Python in der professionellen Entwicklung

Welche der folgenden Aussagen über Pythons Verwendung in der Softwareentwicklung ist am GENAUESTEN?

A) Python wird nur für wissenschaftliche Forschung verwendet
B) Python dient als Klebstoff, der spezialisierte, performante Bibliotheken (oft in C++/CUDA) verbindet
C) Python ist für Produktionssysteme zu langsam
D) Python ist nur für Prototyping, nie für Produktionscode

Antwort anzeigen

Richtige Antwort: B

Python excelliert als hochrangige Orchestrierungsschicht, die spezialisierte, performante Bibliotheken (NumPy, PyTorch in C++/CUDA) verbindet. Dies erlaubt Entwicklern, sich auf Geschäftslogik zu konzentrieren, während schweres Heben durch optimierten Low-Level-Code erledigt wird.


Frage 3: Python-Version 2 vs. 3

Was ist der Status von Python 2 im Jahr 2025?

A) Python 2 ist immer noch weit verbreitet und voll unterstützt
B) Python 2 und 3 sind gleichermaßen gültige Optionen für neue Projekte
C) Python 2 erreichte End-of-Life im Jahr 2020—verwenden Sie es niemals für neue Projekte
D) Python 2 ist schneller als Python 3

Antwort anzeigen

Richtige Antwort: C

Python 2 erreichte End-of-Life am 1. Januar 2020. Es erhält keine Updates mehr, sogar keine Sicherheitspatches. NIEMALS für neue Projekte verwenden. Verwenden Sie immer Python 3.9+ für moderne Entwicklung.


Frage 4: Empfohlene Python-Version

Warum empfiehlt der Kurs Python 3.12+?

A) Es ist die einfachste zu installierende Version
B) Es ist die einzige verfügbare Python-3-Version
C) Es ist die neueste stabile Version mit modernen Features, Performance-Verbesserungen und voller Unterstützung aktueller Bibliotheken
D) Es ist nur für Anfänger gedacht

Antwort anzeigen

Richtige Antwort: C

Python 3.12+ repräsentiert die Entwicklung moderner Best Practices (Type Hints, strukturiertes Pattern Matching, Performance-Verbesserungen). Das Verwenden neuerer Versionen stellt Kompatibilität mit aktuellen Bibliotheken sicher und lehrt zeitgenössische Python.


Frage 5: Zweck virtueller Umgebungen

Was ist der HAUPTZWECK virtueller Umgebungen in der Python-Entwicklung?

A) Sie lassen Ihren Code schneller laufen
B) Sie isolieren Projektabhängigkeiten, sodass verschiedene Projekte unterschiedliche Versionen derselben Bibliothek ohne Konflikte haben können
C) Sie sind erforderlich, um Python überhaupt zu installieren
D) Sie sind nur für fortgeschrittene Entwickler gedacht

Antwort anzeigen

Richtige Antwort: B

Virtuelle Umgebungen schaffen isolierte Python-Umgebungen für jedes Projekt mit eigenen Abhängigkeiten. Projekt A kann NumPy 1.24 verwenden, während Projekt B NumPy 2.0 verwendet, ohne dass sie sich gegenseitig stören—das verhindert “Dependency Hell”.


Frage 6: Risiko von pip install ohne virtuelle Umgebungen

Was passiert, wenn Sie pip install ohne Verwendung virtueller Umgebungen ausführen?

A) Nichts—dies ist die empfohlene Vorgehensweise
B) Sie riskieren, Ihre systemweite Python-Installation zu verunreinigen, mit Versionskonflikten zwischen Projekten
C) Pakete installieren sich schneller
D) Es ist nur auf Windows ein Problem, nicht auf Mac/Linux

Antwort anzeigen

Richtige Antwort: B

Installation in die globale Umgebung kontaminiert Ihr System-Python, erzeugt Versionskonflikte und kann Systemtools beschädigen, die auf Python angewiesen sind. Projektabhängigkeiten sollten immer in isolierten virtuellen Umgebungen installiert werden.


Frage 7: Traditionelles Tooling vs. uv

Welche der folgenden Listen beschreibt das traditionelle Python-Tooling-Ökosystem am GENAUESTEN?

A) Ein einzelnes Werkzeug, das alles tut
B) Fragmentiert—separates pip (Pakete installieren), venv (Umgebungen), virtualenv, pip-tools, setuptools (Packaging), poetry/pipenv (versuchen zu vereinheitlichen)
C) Nur pip wird benötigt für alles
D) Python hat keine Package-Management-Werkzeuge

Antwort anzeigen

Richtige Antwort: B

Das traditionelle Python-Ökosystem ist fragmentiert mit mehreren Werkzeugen für unterschiedliche Aufgaben: pip (Installation), venv/virtualenv (Umgebungen), setuptools (Packaging), poetry/pipenv (versuchen zu integrieren). Dies schafft Verwirrung, besonders für Anfänger.


Frage 8: Warum uv wählen?

Was ist der HAUPTVORTEIL von uv gegenüber traditionellen Python-Werkzeugen?

A) Es ist in Python geschrieben und daher einfacher zu verstehen
B) Es ist das älteste und am weitesten etablierte Python-Werkzeug
C) Es vereinheitlicht Paket-Management, virtuelle Umgebungen, Versionsverwaltung und Projekt-Workflows in einem schnellen Rust-basierten Werkzeug
D) Es ist nur für Windows-Benutzer gedacht

Antwort anzeigen

Richtige Antwort: C

uv vereinheitlicht zersplitterte Python-Werkzeuge in einer einzigen, schnellen (Rust-basierten) Schnittstelle. Es behandelt Paket-Installation, virtuelle Umgebungen, Python-Versionsverwaltung und Projekt-Initialisierung—alles mit einem konsistenten, schnellen Werkzeug.


Frage 9: uv-Performance

Wie ist die Performance-Charakteristik von uv im Vergleich zu pip?

A) uv ist etwas langsamer, aber einfacher zu verwenden
B) uv ist 10-100x schneller als pip für Paket-Installationen dank Rust-Implementation und intelligentem Caching
C) uv und pip haben identische Performance
D) uv ist nur auf spezieller Hardware schnell

Antwort anzeigen

Richtige Antwort: B

uv ist 10-100x schneller als pip bei Paket-Installationen aufgrund seiner Rust-Implementation, parallelen Downloads, intelligentem Caching und optimierten Dependency Resolution—wesentlich bei großen Projekten.


Frage 10: Traditionelle requirements.txt

Was ist die HAUPTSCHWÄCHE traditioneller requirements.txt-Dateien?

A) Sie sind zu schwer zu erstellen
B) Sie geben nur direkte Abhängigkeiten an, ohne Metadaten, lockfile Funktionalität oder Build-Konfiguration—ein veralteter Ansatz
C) Sie funktionieren nur mit Python 2
D) Sie sind zu detailliert und komplex

Antwort anzeigen

Richtige Antwort: B

requirements.txt ist ein Flat-File-Format ohne Struktur, keine Unterscheidung zwischen direkten und transitiven Abhängigkeiten, keine Metadaten, kein Locking-Mechanismus—ein veralteter Ansatz, der von pyproject.toml ersetzt wird.


Frage 11: pyproject.toml-Standard

Was macht pyproject.toml zum modernen Python-Standard?

A) Es ist einfacher zu schreiben als requirements.txt
B) Es ist ein strukturiertes, standardisiertes Format (PEP 518/621), das Metadaten, Abhängigkeiten und Build-Konfiguration kombiniert
C) Es ist nur für Web-Entwicklung gedacht
D) Es ist optional und für professionelle Entwicklung nicht notwendig

Antwort anzeigen

Richtige Antwort: B

pyproject.toml ist der PEP 518/621-standardisierte, maschinenlesbare Ansatz, der Projektmetadaten, Abhängigkeiten, Build-Konfiguration und Tool-Einstellungen in einer strukturierten TOML-Datei kombiniert—der moderne Python-Packaging-Standard.


Frage 12: Projekt-Initialisierung mit uv

Was macht der Befehl uv init project-name NICHT?

A) Erstellt die Projektverzeichnisstruktur
B) Initialisiert eine virtuelle Umgebung
C) Erstellt eine pyproject.toml-Datei
D) Schreibt automatisch den gesamten Anwendungscode

Antwort anzeigen

Richtige Antwort: D

uv init richtet die Projektstruktur, virtuelle Umgebung, pyproject.toml und Basis-Konfiguration ein, aber schreibt nicht Ihren Anwendungscode—das ist Ihre Aufgabe als Entwickler. Es erstellt Projektgerüste, nicht Geschäftslogik.


Frage 13: Best Practice für Abhängigkeitsspezifikation

Was ist die Best Practice für die Spezifikation von Abhängigkeiten in pyproject.toml?

A) Immer exakte Versionen festlegen (z.B. numpy==1.24.0)
B) Niemals Versionen spezifizieren—einfach numpy verwenden
C) Kompatible Release-Bereichsoperatoren verwenden (z.B. numpy>=1.24.0) für Flexibilität mit Stabilität
D) Versionen zufällig wählen

Antwort anzeigen

Richtige Antwort: C

Best Practice ist die Verwendung von Bereichsspezifikatoren wie >=1.24.0 (Minimalversion) oder ~=1.24.0 (kompatible Releases), die ein Gleichgewicht zwischen Aktualisierungen für Bugfixes/Features und Vermeidung von Breaking Changes schaffen.


Frage 14: Paket-Installation mit uv

Welcher uv-Befehl installiert ein Paket UND aktualisiert pyproject.toml automatisch?

A) uv install numpy
B) uv add numpy
C) uv get numpy
D) uv download numpy

Antwort anzeigen

Richtige Antwort: B

uv add numpy installiert das Paket in die virtuelle Umgebung UND aktualisiert automatisch die [dependencies]-Sektion in pyproject.toml, hält Datei und Umgebung synchronisiert—viel besser als pip install.


Frage 15: Entwicklungs-Abhängigkeiten

Was sind “Entwicklungs-Abhängigkeiten” in pyproject.toml?

A) Abhängigkeiten, die nur während der Entwicklung benötigt werden (Testing-Frameworks, Linters, Formatters), nicht in Produktion
B) Die wichtigsten Abhängigkeiten des Projekts
C) Abhängigkeiten nur für Windows-Entwickler
D) Veraltete Abhängigkeiten, die entfernt werden sollten

Antwort anzeigen

Richtige Antwort: A

Entwicklungs-Abhängigkeiten (dev-dependencies oder optional-dependencies.dev) sind Werkzeuge, die während der Entwicklung benötigt werden (pytest, black, mypy, ruff), aber nicht für die Ausführung der Anwendung in Produktion—hält Produktions-Deployments schlank.


Frage 16: Lock-Dateien

Was ist der Zweck von uv.lock (oder ähnlichen Lock-Dateien)?

A) Sie verhindert, dass andere Entwickler Ihr Projekt verwenden
B) Sie fixiert exakte Versionen aller Abhängigkeiten (direkt und transitiv) für reproduzierbare Builds über Zeit und Umgebungen
C) Sie ist eine Backup-Kopie von pyproject.toml
D) Sie ist nur für Sicherheitsprüfungen

Antwort anzeigen

Richtige Antwort: B

Lock-Dateien pinnen exakte Versionen ALLER Abhängigkeiten (einschließlich transitiver), um sicherzustellen, dass jeder Entwickler und jede Deployment-Umgebung exakt dieselben Paketversionen verwendet—essentiell für Reproduzierbarkeit.


Frage 17: Umgebungs-Synchronisierung

Was tut uv sync?

A) Es synchronisiert Ihren Code mit GitHub
B) Es synchronisiert die virtuelle Umgebung mit Abhängigkeiten, die in pyproject.toml und uv.lock spezifiziert sind
C) Es synchronisiert mehrere Python-Versionen
D) Es synchronisiert Ihren Computer mit einem Server

Antwort anzeigen

Richtige Antwort: B

uv sync stellt sicher, dass die virtuelle Umgebung exakt die Abhängigkeiten aus pyproject.toml und uv.lock widerspiegelt—installiert fehlende Pakete, entfernt überzählige, aktualisiert Versionen—hält die Umgebung sauber und konsistent.


Frage 18: Python-Versionsverwaltung

Welche Aussage über Pythons Versionsverwaltung mit uv ist richtig?

A) uv kann nur eine Python-Version verwalten
B) uv kann mehrere Python-Versionen installieren und verwalten, sodass Projekte spezifische Versionen spezifizieren können
C) Sie müssen Python immer manuell von python.org installieren
D) Python-Versionsverwaltung ist nur auf Linux verfügbar

Antwort anzeigen

Richtige Antwort: B

uv kann mehrere Python-Versionen installieren und verwalten, sodass verschiedene Projekte unterschiedliche Python-Versionen spezifizieren können (z.B. ein Projekt nutzt 3.11, ein anderes 3.12) ohne manuelle Installation oder Pfad-Manipulation.


Frage 19: Projekt-Setup-Workflow

Was ist die richtige Reihenfolge, um ein neues Python-Projekt mit uv einzurichten?

A) Code schreiben → uv init → Abhängigkeiten installieren
B) uv init projekt-name → in das Projektverzeichnis wechseln → uv add für Abhängigkeiten → Code schreiben
C) Abhängigkeiten installieren → Code schreiben → uv init
D) uv adduv init → Code schreiben

Antwort anzeigen

Richtige Antwort: B

Der korrekte Workflow ist: 1) uv init projekt-name (erstellt Struktur), 2) cd projekt-name (in das Verzeichnis wechseln), 3) uv add bibliotheksname (Abhängigkeiten hinzufügen), 4) Code schreiben. Projektgerüste kommt zuerst.


Frage 20: Moderne Python-Philosophie

Was ist die KERNPHILOSOPHIE der modernen Python-Entwicklung, wie sie in der Vorlesung präsentiert wird?

A) Minimale Tools verwenden, alles manuell machen
B) So viele Python-Versionen wie möglich installieren
C) Dependency Isolation (virtuelle Umgebungen), deklarative Konfiguration (pyproject.toml) und reproduzierbare Umgebungen (lock files) mit vereinheitlichten Werkzeugen (uv)
D) Nur die neuesten experimentellen Features verwenden

Antwort anzeigen

Richtige Antwort: C

Moderne Python-Entwicklung betont: 1) Dependency Isolation durch virtuelle Umgebungen, 2) Deklarative Konfiguration über pyproject.toml, 3) Reproduzierbare Builds durch Lock-Dateien, 4) Vereinheitlichtes Tooling (uv) statt fragmentierter Tools—professionelle Standards für Wartbarkeit.


Bewertungsleitfaden


Wichtige Erkenntnisse zum Merken

  1. Python 3.12+ ist die empfohlene Version—niemals Python 2 für neue Projekte verwenden
  2. Virtuelle Umgebungen sind obligatorisch, nicht optional—sie verhindern Dependency Conflicts
  3. uv vereinheitlicht fragmentiertes Python-Tooling in einem schnellen, konsistenten Werkzeug
  4. pyproject.toml ist der moderne Standard—requirements.txt ist veraltet
  5. Lock-Dateien sichern reproduzierbare Builds über Zeit und Umgebungen
  6. Dependency Isolation ist grundlegend für professionelle Entwicklung
  7. uv add installiert UND aktualisiert pyproject.toml automatisch
  8. uv sync hält Umgebungen mit Konfigurationsdateien konsistent
  9. Entwicklungs-Abhängigkeiten trennen von Produktions-Abhängigkeiten für saubere Deployments
  10. Moderne Python-Entwicklung betont Reproduzierbarkeit, Isolation und deklarative Konfiguration

Nächste Schritte

Nachdem Sie dieses Quiz abgeschlossen haben:

  1. Hands-on-Praxis: Erstellen Sie ein Testprojekt mit uv init
  2. Experimentieren: Fügen Sie Abhängigkeiten mit uv add hinzu, inspizieren Sie pyproject.toml
  3. Erkunden: Untersuchen Sie uv.lock, um zu verstehen, wie Versionen fixiert werden
  4. Workflow: Üben Sie den vollständigen Workflow: init → add → sync → code → commit
  5. Referenzen: Merken Sie die Dokumentation von uv für Nachschlagematerial

Denken Sie daran: Diese Konzepte sind Industrie-Standard-Praktiken, nicht nur akademische Übungen. Ihre Beherrschung ist entscheidend für professionelle Python-Entwicklung!

© 2026 Dominik Mueller   •  Powered by Soopr   •  Theme  Moonwalk