Neste artigo veremos a alteração ocorrida na versão 3.6 do Python que estabelece um novo funcionamento para a instrução global.

INSTRUÇÃO global

A versão 3.6 do Python trouxe alterações que afetam nossos códigos legados fazendo com que os mesmos deixem de ser executado. Ao definir variáveis com uso da instrução global ou nonlocal será necessário que a mesma (a variável) já esteja declarada no escopo externo.

Código legados ou a não utilização desta nova norma resultará numa exceção SintaxError, fazendo com que a aplicação seja finalizada.

EXEMPLOS REAIS

Vamos estudar as mudanças analisando o que ocorrerá ao tentarmos executar um código antigo que não tenha ainda se adequado ou então, caso não trabalharmos seguindo as novas regras:

O exemplo a seguir mostra um código legado não adaptado.

def fun():

    var = 10
    global var

O código acima, se executado, produzirá a seguinte exceção:

  File "main.py", line 5
    global var

SyntaxError: name 'var' is assigned to before global declaration

É interessante observar que a exceção será levantada no momento da execução do código --- o que é muito bom! O Python geralmente levanta a exceção quando o Cursor de Execução executa uma expressão problemática. Ainda que nada tenha sido dito, muito provavelmente a execução da aplicação será interrompida ainda no seu lançamento para que os desenvolvedores consigam facilmente identificar e não corram o risco de liberar códigos que não estejam adaptados.

Por essa razão é que muito provavelmente fora dado um tratamento diferencial --- para que possamos, ainda nos testes, identificar e corrigir. Sem dúvida que o quanto antes o código se mostrar problemático, melhor será nossas vidas como desenvolvedores! Essa é, na minha opinião, a melhor solução --- do contrário, teríamos pacotes e scripts quebrando em todos os lugares.

A notificação dessa alteração pode ser vista nesta página .

A PEP que propôs a alteração pode ser acessada PEP 526 .

CONCLUSÃO

Sendo este site voltado majoritariamente (no momento em que escrevo) destinado ao público estudante, poucos terão código legados para alterarem.

Aos que tiverem códigos escritos e vierem a ter problemas, facilmente conseguirão corrigir.

A minha situação é diferente de ambos os casos acima, pois, fazem 2 meses que lancei uma aula especial explicando a utilização das instruções local e nonlocal.

Alterar uma aula nunca é fácil, pois, você precisa falar algo que será encaixado no meio de um contexto. Não corrigir a aula e deixar o problema é aparentemente muito mais fácil, porém, após anos, comprovarás que a quantidade de perguntas realizadas pelos seus alunos lhe consumiu mais tempo do que a difícil, chata e ingrata missão de alterar uma aula --- quem acaba de ser lançada.

Isso é trabalhar com tecnologia. Viver mudando e fazendo os outros mudarem pelas nossas mudanças.



Tags python, python36, local, nonlocal, blog

Comentários

comments powered by Disqus