Variáveis ​​globais, locais e não locais do Python (com exemplos)

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 globalpalavra - 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 globalporque usamos o x * 2para 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 nonlocalpalavras-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.

Artigos interessantes...