Quero responder a uma pergunta que você pode ou não ter, mas
é algo que me levou anos para entender, e por que não ter tudo como variáveis globais?
Quer dizer, toda essa confusão de quem tem acesso a quem, como seria fácil se tudo estivesse na
página principal, todas as nossas informações, todos os dados do nosso escopo global para que tudo tenha acesso
a tudo.
Não seria mais fácil?
E você estaria certo.
Quer dizer, isso faria toda essa dor de cabeça passar, certo?
Mas é preciso lembrar que as máquinas não têm potência infinita, não têm CPU infinita, não
têm memória infinita, todas têm recursos limitados.
E, como programadores, temos que estar cientes de quais recursos usamos, porque às vezes isso pode nos custar
dinheiro, às vezes pode travar nossos computadores.
E o escopo é uma grande demonstração disso.
Por exemplo, este código bem aqui, quando esta função é executada, estamos criando tecnicamente apenas
um local na memória para a variável X.
Portanto, temos aquela estante em nosso computador que é o X que aponta para o local quando realmente chamamos essa
função.
E então, quando dizemos não local aqui, bem, estamos dizendo apenas não crie outra estante de livros para nós.
Basta usar o que já temos e atribuir não local.
Se não tivéssemos essa linha, quando chegarmos à linha sete, colocaremos na memória X igual a local e X
igual a não local.
Portanto, temos dois locais agora na memória.
Agora, isso não é grande coisa porque, bem, nos dias de hoje, temos muita memória.
Mas, à medida que os programas ficam cada vez maiores, isso se torna um problema.
OK, mas e uma função?
Quer dizer, aprendemos que as funções nos permitem não nos repetir e sermos capazes de chamar várias
vezes.
Mas outro bom uso das funções é que, uma vez que chamamos essa função e tudo isso é feito,
o computador e o interpretador Python destrói especificamente toda essa memória.
Ou seja, assim que terminarmos com a função externa, não posso realmente chamar print X aqui.
Isso vai me dar um erro.
Vai dizer que não tenho ideia do que existe.
E por que isto?
É porque depois de chamarmos essa função, o python será chamado e o coletor de lixo dirá,
ei, parece que terminamos com esta função.
E vejo que esta variável X também, e esta variável X não vamos usar porque terminamos com esta
função.
Vou recolher esse lixo e depois jogá-lo fora.
Portanto, vou esvaziar esse armário de memória para que outros recursos ou outros programas possam usá-lo.
E esse é um recurso muito bom, em que o Python apenas os remove automaticamente para que você não
entupir a memória do computador.
E é por isso que o SCOP é útil.
Não precisamos pensar sobre isso em tantos detalhes como mencionei, mas é bom saber que
está lá para que seus programas não consumam muita memória e possam ser executados com eficiência.
Este é um tópico um pouco avançado, mas eu gostaria de incluí-lo aqui para que você possa pensar sobre
por que os programas são projetados dessa maneira.
Tudo bem.
Eu vou parar de falar agora.
Te vejo no próximo vídeo.
Bye Bye.