Neste artigo vamos ver qual a diferença de global e nonlocal no Python, com exemplos práticos e quando vamos utilizar cada um deles.
Fala programador(a), beleza? Bora aprender mais sobre Python!
A grande diferença entre global e nonlocal é que global faz referência ao escopo global
Já a declaração nonlocal faz referência ao escopo local acima do escopo atual
O escopo global seria o ponto mais alto do código, onde estamos fora de funções, por exemplo
Veja uma maneira de utilizar o global:
a = 1 def imprimirVarGlobal(): global a print(a) def imprimirVarLocal(): a = 5 print(a) imprimirVarGlobal() imprimirVarLocal()
Teremos a saída:
1 5
Pois a primeira função utilizou a variável a que está declarada globalmente
Então entendemos o escopo global como o que estaria acima de todas as outras instruções
Entenda acima como hierarquicamente, pois pode estar em qualquer lugar do código, desde que fora de funções e classes
Apesar de que se costuma declarar estas variáveis logo nas primeiras linhas
Já o nonlocal, devemos criar um escopo dentro de um escopo
Ou seja, uma função dentro de uma função, por exemplo
Veja um exemplo prático:
def funcaoTeste(): x = 1 def imprimirNonLocal(): nonlocal x print(x) def imprimirLocal(): x = 2 print(x) imprimirNonLocal() imprimirLocal() funcaoTeste()
Teremos a seguinte saída:
1 2
Então desta forma, criamos dois escopos, a função funcaoTeste é um escopo maior do que as duas outras
Tornando-se o escopo nonlocal para imprimirNonLocal e imprimirLocal
Porém só utilizamos a instrução em imprimirNonLocal, que fez o proposto
Quando utilizar cada uma das abordagens parte da lógica do programa
Precisamos acessar a variável global? Ou uma variável de escopo acima?
São as perguntas que você deve fazer, antes de utilizar cada uma das instruções
Conclusão
Neste artigo vimos a diferença de global e nonlocal no Python
Basicamente global é o escopo em nível mais alto hierarquicamente no programa, ou seja fora de funções e classes
E o nonlocal é um escopo acima de onde foi declarado
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube