Python: Por que o global é necessário apenas na atribuição e não nas leituras?

Se uma função precisar modificar uma variável declarada no escopo global, ela precisará usar a declaração global. No entanto, se a função só precisar ler uma variável global, ela poderá fazer isso sem usar uma declaração global:

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

Minha pergunta é sobre o design do Python: por que o Python é projetado para permitir a leitura de variáveis ​​globais sem usar a declaração global? Isto é, porque somente a atribuição de força é global, por que não forçar globalmente em leitura também? (Isso tornaria ainda mais e elegante.)

Nota: Eu posso ver que não há ambiguidade durante a leitura, mas enquanto atribuí-lo não está claro se alguém pretende criar uma nova variável local ou atribuir a uma variável global. Mas, espero que haja uma razão ou intenção melhor para essa escolha de design desigual pelo BDFL.

questionAnswers(4)

yourAnswerToTheQuestion