Python

Qual a diferença de global e nonlocal no Python?

1 de maio de 2020

Qual a diferença de global e nonlocal no Python?

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.

diferenca entre local e nonlocal capa

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

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x