Python: Warum wird global nur bei Zuweisung und nicht beim Lesen benötigt?

Wenn eine Funktion eine im globalen Bereich deklarierte Variable ändern muss, muss sie die globale Deklaration verwenden. Wenn die Funktion jedoch nur eine globale Variable lesen muss, kann dies ohne Verwendung einer globalen Deklaration erfolgen:

<code>X = 10
def foo():
    global X
    X = 20 # Needs global declaration
def bar():
    print( X ) # Does not need global
</code>

Meine Frage bezieht sich auf das Design von Python: Warum ist Python so konzipiert, dass es das Lesen globaler Variablen ohne Verwendung der globalen Deklaration ermöglicht? Das heißt, warum nur die Zuweisung erzwingen, um global zu sein, und warum nicht auch das globale Lesen erzwingen? (Das würde es ebenmäßig und elegant machen.)

Hinweis: Ich sehe, dass es beim Lesen keine Mehrdeutigkeit gibt, aber beim Zuweisen ist nicht klar, ob eine neue lokale Variable erstellt oder der globalen Variablen zugewiesen werden soll. Ich hoffe jedoch, dass es einen besseren Grund oder eine bessere Absicht für diese ungleichmäßige Designauswahl durch die BDFL gibt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage