Neste tutorial, você aprenderá sobre variáveis globais Python, variáveis locais, variáveis não locais e onde usá-las.
Vídeo: Variáveis locais e globais do Python
Variáveis globais
Em Python, uma variável declarada fora da função ou no escopo global é conhecida como variável global. Isso significa que uma variável global pode ser acessada dentro ou fora da função.
Vamos ver um exemplo de como uma variável global é criada em Python.
Exemplo 1: criar uma variável global
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Resultado
x dentro: global x fora: global
No código acima, criamos x como uma variável global e definimos a foo()
para imprimir a variável global x. Finalmente, chamamos o foo()
que imprimirá o valor de x.
E se você quiser alterar o valor de x dentro de uma função?
x = "global" def foo(): x = x * 2 print(x) foo()
Resultado
UnboundLocalError: variável local 'x' referenciada antes da atribuição
A saída mostra um erro porque o Python trata x como uma variável local e x também não está definido internamente foo()
.
Para fazer isso funcionar, usamos a global
palavra - chave. Visite Python Global Keyword para saber mais.
Variáveis Locais
Uma variável declarada dentro do corpo da função ou no escopo local é conhecida como variável local.
Exemplo 2: Acessando variável local fora do escopo
def foo(): y = "local" foo() print(y)
Resultado
NameError: o nome 'y' não está definido
A saída mostra um erro porque estamos tentando acessar uma variável local y em um escopo global, enquanto a variável local só funciona dentro foo()
ou no escopo local.
Vamos ver um exemplo de como uma variável local é criada em Python.
Exemplo 3: Criar uma variável local
Normalmente, declaramos uma variável dentro da função para criar uma variável local.
def foo(): y = "local" print(y) foo()
Resultado
local
Vamos dar uma olhada no problema anterior em que x era uma variável global e queríamos modificar x internamente foo()
.
Variáveis globais e locais
Aqui, mostraremos como usar variáveis globais e variáveis locais no mesmo código.
Exemplo 4: usando variáveis globais e locais no mesmo código
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Resultado
global global local
No código acima, declaramos x como global ey como variável local no foo()
. Em seguida, usamos o operador de multiplicação *
para modificar a variável global xe imprimimos x e y.
Depois de chamar o foo()
, o valor de x torna-se global global
porque usamos o x * 2
para imprimir duas vezes global
. Depois disso, imprimimos o valor da variável local y ie local
.
Exemplo 5: variável global e variável local com o mesmo nome
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Resultado
local x: 10 global x: 5
No código acima, usamos o mesmo nome x para a variável global e a variável local. Obtemos um resultado diferente quando imprimimos a mesma variável porque a variável é declarada em ambos os escopos, ou seja, o escopo local interno foo()
e o escopo global externo foo()
.
When we print the variable inside foo()
it outputs local x: 10
. This is called the local scope of the variable.
Similarly, when we print the variable outside the foo()
, it outputs global x: 5. This is called the global scope of the variable.
Nonlocal Variables
Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.
Let's see an example of how a nonlocal variable is used in Python.
We use nonlocal
keywords to create nonlocal variables.
Example 6: Create a nonlocal variable
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
No código acima, existe uma inner()
função aninhada . Usamos nonlocal
palavras-chave para criar uma variável não local. A inner()
função é definida no escopo de outra função outer()
.
Nota : Se alterarmos o valor de uma variável não local, as alterações aparecem na variável local.