Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Escopo de uma váriável

Estudando python me deparei com a seguinte "pegadinha":

Considere o trecho do programa Python abaixo.

def func():
    x = 1
    print(x)
x = 10
func()
print(x)

Os valores impressos, ao se executar o programa, são, respectivamente,

sendo a resposta correta:

1 e 10.

Porém eu não entendi bem o escopo dessa variável. Alguma dica?

2 respostas
solução!

Hola Rafael,

No seu caso, você tem duas variáveis chamadas x em escopos diferentes.

  • O primeiro dentro da função:
def func():
    x = 1 # variável local na função
    print(x)
  • O segundo fora da função
x = 10 # variável global
func()
print(x)

Como grande parte das linguagens, variáveis globais são declaradas na raiz da aplicação.

Quando se escreve uma função, repetidor (for, while...), comando de definição (if...)..., eles ganham um escopo próprio. Esse escopo no Python é definido pelos "espaços".

Quando foi definido x = 1, com aqueles espaços após a declaração de def func(): significa que você está declarando uma variável x no escopo da função func() e iniciando ela.

Porém, quando você escreve novamente x = 10 fora dos 'espaços', significa que está fora do escopo da função, e sim no escopo da aplicação (do arquivo que você está escrevendo). Por ser outro escopo, significa que você está declarando uma nova variável, também chamada x.

Então:

  • Função --> x = 1
  • Aplicação --> x = 10

Como cada print também está em escopo diferente, é imprimido o x do escopo aonde o print está.

Espero ter ajudado \\//_

Claro que ajudou... entendi perfeitamente. Muito obrigado =D