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.

pressao = 103.9

def ajustar(t):
    temperatura = t * 1.43 / pressao
    return temperatura
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:

  1. Quantos níveis tem o traceback?
  2. Qual é o nome do arquivo onde o erro ocorreu?
  3. Qual é o nome da função onde o erro ocorreu?
  4. Em que número de linha da função esse erro ocorreu?
  5. Qual é o tipo de erro?
  6. 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

  1. Três níveis.
  2. erros_02.py
  3. imprimir_mensagem
  4. Linha 11.
  5. 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 o KeyError e outras exceções embutidas na documentação do Python.
  6. KeyError: 'Sexta'

Pontos-chave

  • O escopo de uma variável é a parte do programa que pode ‘ver’ essa variável.