Passando argumento da função pai para a função aninhada Python

aqui está o meu código:

def f(x):
    def g(n):
        if n < 10:
            x = x + 1
            g(n + 1)
    g(0)

Quando avalio f (0), haveria um erro "x referenciado antes da atribuição".

No entanto, quando eu uso "print x" em vez de "x = x + 1", funcionará.

Parece que no escopo de g, eu só posso usar x como uma "ocorrência de uso", mas não uma "ocorrência de ligação". Eu acho que o problema é que f passa para g apenas o valor de x.

Estou entendendo corretamente ou não? Se não, alguém pode explicar porque o lado esquerdo de "x = x + 1" não está definido antes da referência?

obrigado

questionAnswers(2)

yourAnswerToTheQuestion