NOME DURAÇÃO
Curso de Python
Primeira Aula de Python
Como Instalar o Python no Windows
Características do Python
Recursos do Python
IDLE - Modo Interativo do Python
Instalando o PyCharm no Windows
Primeiro programa em Python
Comentários em Python
Indentação do código Python
Variáveis em Python
Características das Variáveis em Python
Nomenclatura das Variáveis em Python
Tipos de dados em Python
Variáveis do tipo Ponto Flutuante do Python
Entrada de Dados em Python
Operadores Aritméticos do Python
Módulo da Divisão em Python
Potenciação e Radiciação em Python
Operadores Relacionais do Python
Tomada de Decisão em Python
Estrutura if e else em Python
Depurando código Python
Operadores Relacionais Compostos do Python
Operadores Relacionais na Prática em Python
Operadores Lógicos em Python
Blocos de Instrução em Python
Blocos de Instrução em Python (Parte II)
Blocos de Instrução Python na Prática
Escopo de Nomes em Python
Estrutura de Atribuição Simples do Python
Atribuição Múltipla em Python
Operadores de Atribuição Compostos do Python
Atribuição Condicional em Python
Iteração em Python
Laços de Repetição do Python
Estrutura de repetição while em Python
A instrução for em Python
A função range() do Python
O for loop e a função range() do Python
Instrução break do Python
Instrução continue em Python
Estruturas de Dados Lista em Python
Lista, Pilha, Array, Set em Python
A classe list do Python
Classe list - Conceitos Avançados do Python
Funções da Classe list do Python
Iteração de Listas em Python
Fatiando Listas em Python
Incluindo, Alterando e Excluindo Elementos no Python
Ordenamento de Listas em Python
Quantidade de Itens em Python
Tuplas em Python
Operadores in e not in do Python
Operadores and, or e in do Python
Exemplo com Operador in em Python
Introdução às Strings em Python
Fatiando Strings com Python
Funções das Strings no Python
Comparação de Strings em Python
Iterando Strings em Python
Introdução aos Dicionários do Python
Dicionários na Prática com Python
Funções dos Dicionários no Python
Introdução às Funções em Python
Parâmetros de Função em Python
Parâmetros default em Python
Argumento de Função Nomeado vs Posicional em Python
Retornando Valores pelas Funções em Python

Nessa aula estudaremos o Escopo de Nomes e continuar nosso estudo sobre os blocos de instrução.

ESCOPO

O Escopo de Nome tem a função de classificar quais nome de variáveis, funções, classes estão acessíveis em cada bloco de instrução. O escopo, também é responsável por inutilizar variáveis declaradas e que não serão mais utilizadas, podendo assim, serem removidas da memória pela Máquina Virtual do Python.

Temos que enxergar o escopo de nomes como mini-programas, onde todas as variáveis declaradas são globais e restritas ao seu bloco. Um bloco de código que possua outros blocos de códigos, definirá um escopo de nomes para cada novo bloco definido e restringira os nomes ali definidos.

A seguir, temos um código bastante simples e que o Python não executa, isso porque, colocamos funções em blocos de instrução diferentes sem utilizarmos para isso, alguma estrutura que permitisse a utilização de diversos blocos.

#coding: utf-8

print()
    print()
        print()

Cada instrução print() foi utilizada num bloco de instrução novo, e por isso, possui seu escopo restrito. Se tivéssemos declarações de variáveis em cada bloco de instrução, estes seriam liberados quando o cursor de execução retornasse ao nível hierarquico anterior.

A seguir, temos outro código para demonstração que também não será executado, porém, que nos ajudará a entender melhor o escopo de nomes.

#coding: utf-8

a = 1
    b = 2
    c = 3
        d = 4
    d = 0
    e = 5
f = 6

No código acima, declaramos várias variáveis em blocos de instrução diferentes. Caso o código compilasse sem problema, temos que todas as variáveis declaradas em escopos hierarquicamente a frente, seriam desalocadas quando o cursor de execução voltasse ao nível anterior. Assim, temos que todo escopo consegue enxergar os nomes declarados no bloco onde está contido, porém o contrário não é verdadeiro.

#coding: utf-8

a = 10
    b = 20
        c = 30
    d = b + c #erro a variável c já foi liberada pelo Garbage Collector da VM do Python

No exemplo acima, caso fosse possível executar, haveria um erro na soma de b + c, isso porque, a variável c foi desalocada quando o cursor de execução voltou para o segundo nível hierarquico.

EXEMPLO FEITO EM AULA

#coding: utf-8

#=====================================
#========== www.eXcript.com ==========
#=====================================

a = 25
if(True):
    a = 50
    if(False):
        b = 50
    a = 40


Tags curso, python, escopo, blog

Comentários

comments powered by Disqus