Globale Verständnisfragen

Zum Abschluss dieses Lernmoduls wollen wir noch einmal die wichtigsten Erkenntnisse und Informationen, die Sie aus diesem Lernmodul mitnehmen sollen, mit einigen zusammenfassenden Fragen verschiedenen Typs abfragen und wiederholen. Sie können diese Fragen als "inverted classroom" verstehen, und damit als komplementär zu den vorgeschlagenen größeren Übungen im nächsten Abschnitt. Die Idee ist, dass Sie sich hier überlegen können, ob Sie die gestellten Fragen selbst beantworten können. Falls es noch Unklarheiten gibt, können Sie die entsprechenden Antworten nochmals direkt in den passenden Abschnitten des Lernmoduls rekapitulieren. Dementsprechend sind die Antworten auch absichtlich skizzenhaft. Bitte zögern Sie nicht, bei konkreten Fragen einen der Kanäle zur Hilfe zur Selbsthilfe zu nutzen. 

Vokabeltest

    Was ist der Unterschied zwischen * und **?
        Mit einem * werden positional Argumente gekennzeichnet, mit ** keyword-Argumente. Erstere erlauben es, die Anzahl von Funktionsargumenten komplett freizulassen. Innerhalb der Funktion stehen sie dann als tuple zur Verfügung. Letzte kennzeichnen beliebig viele key-value Paare, die innerhalb der Funktion als dict zur Verfügung stehen.
    Wie ist ein Modul definiert?
        Im Prinzip durch eine Verzeichnisstruktur. Details finden Sie in diesem Abschnitt.
    Wie wird eine Funktion als Funktionsargument übergeben?
        Eine Funktion ist ein Argument wie jedes andere auch. Wichtig ist, dass keyword-Argumente genutzt werden können, um der übergebenen Funktion Argumente zu übergeben. 


Syntaxfragen

    Was ist eine anonyme Funktion?
        Eine anonyme (bzw. Lambda-Funktion) ist nur sichtbar im Block, in dem sie definiert wird. Aus pragmatischer Sicht sparen uns anonyme Funktionen Tipparbeit. Ihr Sinn erschließt sich im weiteren Verlauf des Kurses.
    Wie geben Sie eine beliebige Anzahl an Default-Argumenten vor?
        Hierzu dienen positional Argumente, "key-value" Paare in Argumentlisten können an beliebiger Stelle auftreten.
    Wie geben Sie eine beliebige Anzahl an Funktionsargumenten vor?
        Hierzu verwendet man keyword-Argumente. Die Argumente einer übergebenen Funktion stehen so als dict zur Verfügung.


Einfache Verständnisfragen

    Erklären Sie, wann eine Variable lokal und wann global ist
        Variablen außerhalb eines Blocks sind immer globaler als Variablen, die innerhalb eines Blocks definiert werden. Eine Funktionsdefinition (inkl. Argumentliste) ist ein Block. Lokale Variablen überschreiben temporär globale, was eine beliebte Fehlerquelle darstellt.
    Erklären Sie den Unterschied zwischen mutable und immutable
        Das haben wir umfangreich diskutiert in vorherigen Lerneinheiten. Wichtige Details im Bezug auf Funktionen sind zu beachten, s. hier.
    Was ist bei der Reihenfolge von Funktionsargumenten zu beachten?
        Generell ist die Reihenfolge beliebig, wenn man weiß, was als positional- oder keyword-Argument interpretiert wird. Empfehlenswert ist daher, immer alle Argumente zu benennen, um auf der sicheren Seite zu sein.


Transferfragen (Antworten fehlen noch)

    Geben Sie ein Beispiel an für ein immutables Funktionsargument
        Immutable Datentypen ändern den Wert einer Variable, der außerhalb einer Funktion gesetzt wurde, nur innerhalb der Funktion. Der Wert außerhalb bleibt erhalten.
    Geben Sie ein Beispiel an für ein mutables Funktionsargument
        Hier wird der Wert überschrieben bzw, geändert. Wichtig ist in beiden Fällen nicht, wie wir eine Variable übergeben, sondern ob die Variable bei der Übergabe mutable bzw. immutable ist.
    Schreiben Sie eine Funktion, die eine übergebene existierende Liste modifiziert
        Eine mögliche Lösung finden Sie in der Tatei 11a_InvertedClassroom.ipynb.
    Schreiben Sie eine Funktion, die ein übergebenes Dictionary vollständig kopiert und die Kopie zurückgibt
        Eine mögliche Lösung finden Sie in der Tatei 11a_InvertedClassroom.ipynb.




