Python: Dlaczego globalny jest potrzebny tylko przy przypisywaniu, a nie przy odczytach?

Jeśli funkcja musi zmodyfikować zmienną zadeklarowaną w zakresie globalnym, musi użyć deklaracji globalnej. Jeśli jednak funkcja musi tylko odczytać zmienną globalną, może to zrobić bez użycia deklaracji globalnej:

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

Moje pytanie dotyczy projektowania Pythona: dlaczego Python został zaprojektowany tak, aby umożliwiał odczyt zmiennych globalnych bez użycia deklaracji globalnej? To znaczy, dlaczego tylko wymuszać przypisanie do globalnego, dlaczego nie wymusić także globalnego czytania? (To sprawi, że będzie to równe i eleganckie.)

Uwaga: Widzę, że nie ma dwuznaczności podczas czytania, ale podczas przypisywania nie jest jasne, czy zamierzasz utworzyć nową zmienną lokalną, czy przypisać ją do zmiennej globalnej. Ale mam nadzieję, że BDFL ma lepszy powód lub zamiar dla tego nierównego wyboru projektu.

questionAnswers(4)

yourAnswerToTheQuestion