‫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.