Escopo em Python

Variáveis estão disponíveis apenas na área onde foram criadas. Isso é conhecido como escopo.

Escopo local

Variáveis criadas dentro de uma função pertencem ao escopo local dessa função e podem ser usadas apenas dentro dessa função.

Exemplo

Variáveis criadas dentro de uma função são acessíveis apenas dentro dessa função:

def myfunc():
  x = 100
  print(x)
myfunc()

Executar Exemplo

Função Interna

Como mostrado no exemplo acima, a variável x não está disponível fora da função, mas está disponível para qualquer função interna dentro da função:

Exemplo

É possível acessar uma variável local dentro de uma função aninhada:

def myfunc():
  x = 100
  def myinnerfunc():
    print(x)
  myinnerfunc()
myfunc()

Executar Exemplo

Escopo Global

As variáveis criadas no corpo do código Python são variáveis globais, pertencendo ao escopo global.

As variáveis globais estão disponíveis em qualquer escopo (global e local).

Exemplo

As variáveis criadas fora da função são variáveis globais, disponíveis para qualquer pessoa:

x = 100
def myfunc():
  print(x)
myfunc()
print(x)

Executar Exemplo

Nomear Variáveis

Se operar a mesma variável dentro e fora da função, o Python as considerará duas variáveis separadas, uma disponível no escopo global (fora da função) e outra disponível no escopo local (dentro da função):

Exemplo

Esta função imprimirá a variável local x e, em seguida, o código também imprimirá a variável global x:

x = 100
def myfunc():
  x = 200
  print(x)
myfunc()
print(x)

Executar Exemplo

Palavra-chave Global

Se você precisar criar uma variável global, mas estiver preso no escopo local, você pode usar a palavra-chave global.

A palavra-chave global torna a variável uma variável global.

Exemplo

Se você usar a palavra-chave global, a variável pertence ao escopo global:

def myfunc():
  global x
  x = 100
myfunc()
print(x)

Executar Exemplo

Além disso, se você precisar alterar uma variável global dentro de uma função, também use a palavra-chave global.

Exemplo

Para alterar o valor de uma variável global dentro de uma função, use a palavra-chave global para referenciar essa variável:

x = 100
def myfunc():
  global x
  x = 200
myfunc()
print(x)

Executar Exemplo