Funções Embutidas e Ajuda
Visão Geral
Perguntas
Como posso usar funções embutidas?
Como posso descobrir o que elas fazem?
Que tipos de erros podem ocorrer em progamas?
Objetivos
Explique o propósito de funções.
Chame corretamente funções Python.
Aninhe chamadas de funções corretamente.
Use o help para mostrar documentação para funções embutidas.
Corretamente descreva situações nas quais
SyntaxErroreNameErrorpodem ocorrer.
Use comentários para adicionar documentação a programas.
# Essa frase não é executada pelo Python
ajuste = 0.5 # Nem essa - qualquer coisa depois do '#' é ignorado.
Uma função pode receber zero ou mais argumentos.
- Já vimos algumas funções — agora vamos olhar mais de perto.
- Um argumento é um valor passado para uma função.
lenrecebe exatamente um.int,str, efloatcriam um novo valor de um existente.printrecebe zero ou mais.printsem nenhum argumento imprime uma linha em branco.- É sempre necessário usar parênteses, mesmo que em branco, para que o Python saiba que uma função está sendo chamada.
print('antes')
print()
print('depois')
antes
depois
Toda função retorna algo.
- Toda chamada de função produz algum resultado.
- Se a função não tem um resultado útil para retornar,
normalmente ela retorna o valor especial
None.Noneé um objeto Python que pode substituir quando não temos nenhum valor.
resultado = print('exemplo')
print('resultado de print é', resultado)
exemplo
resultado de print é None
Funções embutidas comumente usadas incluem max, min e round.
- Use
maxpara encontrar o maior valor de um ou mais valores. - Use
minpara encontrar o menor. - Ambos funcionam em strings de caracteres, bem como números.
- “Maior” e “menor” usam (0-9, A-Z, a-z) para comparar letras.
print(max(1, 2, 3))
print(min('a', 'A', '0'))
3
0
Funções podem funcionar somente para certos(as) (combinações de) argumentos.
maxemindevem ser dados pelo menos um argumento.- “Maior de um conjunto vazio” é uma pergunta sem sentido.
- Essas funções devem ser dadas coisas que podem ser comparadas.
print(max(1, 'a'))
TypeError Traceback (most recent call last)
<ipython-input-52-3f049acf3762> in <module>
----> 1 print(max(1, 'a'))
TypeError: '>' not supported between instances of 'str' and 'int'
Funções podem ter valores padrão para alguns argumentos.
roundvai arrendondar um número de ponto flutuante.- Por padrão, ele vai arredondar para zero casas decimais.
round(3.712)
4
- Podemos especificar o número de casas decimais que queremos.
round(3.712, 1)
3.7
Funções associadas a objetos são chamadas de métodos.
- Funções tomam outra forma que vão ser comum quando chegarmos em Análise de Dados.
- Métodos tem parênteses como funções, mas vem depois da variável.
- Alguns métodos podem ser usados para operações internas do Python, e são marcados com dois underlines.
minha_string = 'Olá Mundo' # criação de um objeto string
print(len(minha_string)) # a função len recebe uma string como argumento e retorna o comprimento da string
print(minha_string.swapcase()) # chamando o método swapcase no objeto minha_string
print(minha_string.__len__()) # chamando o método interno __len__ no objeto minha string, usado por len(minha_string)
9
oLÁ mUNDO
9
- You might even see them chained together. They operate left to right.
print(minha_string.isupper()) # Not all the letters are uppercase
print(minha_string.upper()) # This capitalizes all the letters
print(minha_string.upper().isupper()) # Now all the letters are uppercase
False
OLÁ MUNDO
True
Use a função embutida help para obter ajuda para uma função.
- Toda função embutida tem documentação online.
help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
O Jupyter Notebook tem duas formas de obter ajuda.
- Opção 1: Posicione o cursor onde a função é invocada em uma célula
(i.e., o nome da função ou seus parâmetros),
- Segure Shift, e aperte Tab.
- Faça isso algumas vezes para expandir a informação retornada.
- Opção 2: Digite o nome da função em uma célula com uma interrogação após ele. Execute a célula.
Python reporta um erro de sintaxe quando ele não consegue entender a fonte de um programa.
- O Python nem vai tentar rodar o programa se ele não pode ser avaliado.
# Esqueceu de fechar as apas na string
nome = 'CPFL
File "<ipython-input-56-f42768451d55>", line 2
nome = 'CPFL
^
SyntaxError: EOL while scanning string literal
# Um '=' a mais na assinalação
idade = = 52
File "<ipython-input-57-ccc3df3cf902>", line 2
idade = = 52
^
SyntaxError: invalid syntax
- Olhe mais de perto essa mensagem de erro:
print("olá mundo"
File "<ipython-input-6-d1cc229bf815>", line 1
print ("olá mundo"
^
SyntaxError: unexpected EOF while parsing
- Essa mensagem indica um problema na primeira linha de input (“line 1”).
- Nesse caso a seção “ipython-input” do arquivo nos diz que estamos trabalhando com input no IPython, o interpretador Python usado pelo Jupyter Notebook.
- A parte
-6-do nome de arquivo indica que o erro ocorreu na célula 6 do nosso Notebook. - Em seguida está a linha de código problemática,
indicando o problema com um ponteiro
^.
Python reporta um erro de runtime quando algo dá errado enquanto o programa está sendo executado.
pessoas = 53
restantes = 100 - ppessoas # escreveu 'pessoas' errado
NameError Traceback (most recent call last)
<ipython-input-59-1214fb6c55fc> in <module>
1 pessoas = 53
----> 2 restantes = 100 - ppessoas # escreveu 'pessoas' errado
NameError: name 'ppessoas' is not defined
- Conserte os erros de sintaxe lendo a fonte e os erros de runtime monitorando a execução.
O Que Acontece Quando
- Explique em termos simples de ordem de operações o seguinte programa: quando a adição acontece, quando a subtração acontece, o que cada função é chamada, etc.
- Qual é o valor final de
radiancia?radiancia = 1.0 radiancia = max(2.1, 2.0 + min(radiancia, 1.1 * radiancia - 0.5))Solução
- Ordem das operações:
1.1 * radiancia = 1.11.1 - 0.5 = 0.6min(radiancia, 0.6) = 0.62.0 + 0.6 = 2.6max(2.1, 2.6) = 2.6- No fim,
radiancia = 2.6
Identifique a Diferença
- Faça um predição do que cada declaração
- A linha
max(len(rich), poor)roda ou produz uma mensagem de erro? Se ela roda, o resultado faz sentido?string_facil = "abc" print(max(string_facil)) rico = "ouro" pobre = "latão" print(max(rico, pobre)) print(max(len(rico), len(pobre)))Solução
print(max(string_facil))cprint(max(rico, pobre))ouroprint(max(len(rico), len(pobre)))5
max(len(rico), pobre)retorna um TypeError. Essa avalia paramax(4, 'latão')e e como discutimos mais cedo uma string e um inteiro não podem ser comparados com sentido.TypeError Traceback (most recent call last) <ipython-input-65-bc82ad05177a> in <module> ----> 1 max(len(rico), pobre) TypeError: '>' not supported between instances of 'str' and 'int'
Por que não?
Por que
maxeminnão retornamNonequando são chamados sem argumentos?Solução
maxeminretornam TypeErrors nesse caso porque o número correto de argumentos não foi utilizado. Se só retornasseNone, o erro seria bem mais difícil de encontrar pois provavelmente seria armazenado em uma variável e usado mais a frente no programa, para então causar um erro de runtime.
Último Caracter de Uma String
Se o Python começa a contar do zero, e
lenretorna o número de caracteres de uma string, que expressão de index vai dar o último caracter da stringnome? (Nota: vamos ver uma maneira mais simples de fazer isso em um episódio mais para frente.)Solução
nome[len(nome) - 1]
Explore a Documentação do Python!
A documentação oficial do Python é provavelmente a mais completa fonte de informação sobre a linguagem. Está disponível em diferentes idiomas e contém muitos recursos úteis. A página de funções embutidas contém um catálogo de todas essas funções, incluindo aquelas que cobrimos nessa aula. Algumas dessas são mais avançadas e desnecessárias nesse momento, mas outras são muito simples e úteis.
Pontos-chave
Use comentários para adicionar documentação a programas.
Uma função pode receber zero ou mais argumentos.
Funções embutidas comumente utilizadas incluem
max,mineround.Funções podem funcionar somente para certos(as) (combinações de) argumentos.
Funções podem ter valores padrão para alguns argumentos.
Use a função embutida
helppara conseguir ajuda sobre uma função.O Jupyter Notebook tem duas formas de obter ajuda.
Toda função retorna algo.
Python reporta um erro de sintaxe quando ele não consegue entender a fonte de um programa.
Python reporta um erro de runtime quando algo dá errado enquanto o programa está sendo executado.
Conserte erros de sintaxe lendo o código fonte do programa, e erros de runtime monitorando a execução do programa.