Escopo de Variáveis
Visão Geral
Perguntas
Como chamadas de função realmente funcionam?
Como posso determinar onde erros ocorreram?
Objetivos
Identificar variáveis locais e globais.
Identificar parâmetros como variáveis locais.
Leia um traceback e determine o arquivo, função e número da linha no qual o erro ocorreu, o tipo de erro, e a mensagem de erro.
O escopo de uma variável é a parte do programa que pode ‘ver’ essa variável.
- Só existem tantos nomes sensíveis para variáveis.
- Quando estamos usando funções, não devemos ter que nos preocupar com os nomes das variáveis que quem escreveu a função escolheu.
- Pessoas escrevendo funções não devem ter que se preocupar com que nomes de variáveis quem está chamando a função usa.
- A parte de um programa na qual uma variável está visível é o seu escopo.
pressao = 103.9
def ajustar(t):
temperatura = t * 1.43 / pressao
return temperatura
pressaoé uma variável global.- Definida fora de uma função em particular.
- Visível em todos os lugares.
tetemperaturasão variáveis locais emajustar.- Definidas nas função.
- Não visíveis no programa principal.
- Lembre-se: um parâmetro de função é uma variável que é automaticamente assinalada a um valor quando a função é chamada.
print('ajustada:', ajustar(0.9))
print('temperatura depois da chamada:', temperatura)
ajustada: 0.01238691049085659
Traceback (most recent call last):
File "/Users/xlab/temp.py", line 8, in <module>
print('temperatura depois da chamada:', temperatura)
NameError: name 'temperature' is not defined
Uso Local e Global de Variáveis
Trace os valores de todas as variáveis nesse programa conforme ele é executado. (Use ‘—’ como o valor das variáveis antes e depois deles existirem.)
limite = 100 def limitar(valor): return min(max(0.0, valor), limite) valor = -22.5 print(limitar(valor))
Lendo Mensagens de Erro
Leia o erro abaixo, e identifique o seguinte:
- Quantos níveis tem o traceback?
- Qual é o nome do arquivo onde o erro ocorreu?
- Qual é o nome da função onde o erro ocorreu?
- Em que número de linha da função esse erro ocorreu?
- Qual é o tipo de erro?
- Qual é a mensagem de erro?
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-2-e4c4cbafeeb5> in <module>() 1 import erros_02 ----> 2 erros_02.imprimir_mensagem_sexta() /Users/vini/xlab/cpfl/erros_02.py in imprimir_mensagem_sexta() 13 14 def imprimir_mensagem_sexta(): ---> 15 imprimir_mensagem("Sexta") /Users/vini/xlab/cpfl/erros_02.py in imprimir_mensagem(dia) 9 "domingo": "A semana está quase acabando." 10 } ---> 11 print(messages[dia]) 12 13 KeyError: 'Sexta'Solução
- Três níveis.
erros_02.pyimprimir_mensagem- Linha 11.
KeyError. Esses erros ocorrem quando estamos tentando procurar uma chave que não existe (geralmente em uma estrutura de dados como um dicionário). Podemos encontrar mais informações sobre oKeyErrore outras exceções embutidas na documentação do Python.KeyError: 'Sexta'
Pontos-chave
O escopo de uma variável é a parte do programa que pode ‘ver’ essa variável.