Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
1
Python: Funções, Módulos e a Biblioteca Padrão
Prof. Dr. Dilermando Piva Jr.Python Aula 04
2
Comando print
Python Aula 04
Forma antiga:
3
Comando print
Python Aula 04
Forma mais atual:
4
Funções
...Seu programa tendo cara de programa!
Python Aula 04
5
Definindo FunçõesDefinição da função inicia com “def” Nome da função Argumentos
Identação
“return” indica o retorno da função
Python Aula 04
6
Definindo FunçõesDefinição da função inicia com “def” Nome da função Argumentos
Identação
“return” indica o retorno da função
Sem header fileSem declaração do tipo de retorno da função ou do tipo dos argumentos
Python Aula 04
7
Chamando uma função
>>> def myfun(x, y):
return x * y
>>> myfun(3, 4)
12
• Sintaxe básica para chamar uma função:
Python Aula 04
8
Passagem de parâmetros
• Várias métricas podem ser usadas na passagem dos parâmetrosde uma função:
>>> def myfun(x, y):
return x * y
>>> myfun(3, 4)
12
>>> myfun(y=3, x=4)
12
>>> myfun(3, y=4)
12
Python Aula 04
9
Parâmetros com valores padrões
• Cada parâmetro pode ter um valor padrão.
• Utilizado quando um parâmetro é omitido na chamada da função
def myfun(x, y = 0.3, prompt = True):
res = x * y
if prompt:
print “Resposta é %f”, res
return res
Python Aula 04
10
Parâmetros com valores padrões
def myfun(x, y = 4, prompt = True):
res = x * y
if prompt:
print “Resposta é %i”, res
return res
• Esta função pode ser invocada de várias formas:
>>> myfun(3)
Resposta é 12
12
>>> myfun(x=3, prompt = False)
12
>>> myfun(5, 2, False)
10
Python Aula 04
11
Parâmetros com valores padrões
• Valores default são avaliados apenas uma vez
• Objetos mutáveis (listas, dicionários) armazenam chamadasanteriores
Python Aula 04
12
Parâmetros…
Python Aula 04
13
Múltiplos argumentos (args)
• Pode receber um número arbitrário de parâmetros
• *args (( entra uma tupla para dentro da função ))
Python Aula 04
14
Múltiplos argumentos (args) • Pode receber um número arbitrário de parâmetros
• *args (( entra uma tupla para dentro da função ))
• Pode ocorrer também o desempacotamento automático…passando como parâmetro o *….
Python Aula 04
15
Múltiplos argumentos (kwargs) • Podem receber um número arbitrário de ‘keywords’
• **kwargs
Python Aula 04
Melhorando...
16
Múltiplos argumentos (kwargs) • Podem receber um número arbitrário de ‘keywords’
• **kwargs
Python Aula 04
Um exemplo mais complexo....
17
Múltiplos argumentos
• Podem receber inclusive listas e dicionários.
Python Aula 04
Outro exemplo...
Atenção:
Erro!
18
Valor de retorno• Toda função em Python retorna alguma valor;
• Mesmo funções que não possuem a cláusula return.
• Funções que não possuem return retornam None.
• None é uma constante especial definida na linguagem;
• Similar a NULL, void, ou nil em outras linaguagens;
• É lógicamente equivalente à False;
• O interpretador não imprime None.
Python Aula 04
19
Valor de retorno• Uma função pode retornar mais de um valor
>>> def teste():
x = 1
y = 2
z = 3
return x, y, z
>>> x, y, z = teste()
>>> ret = teste()
>>> ret
(1, 2, 3)
Python Aula 04
20
Observações 1/2
• Funções podem ser utilizadas da mesma maneira queoutro tipo de dado em Python
• Elas podem ser:
- Argumentos para outras funções;
- Valores de retorno de outras funções;
- Atribuídas para outras variáveis;
- Partes de tuplas, listas, etc;
…
Python Aula 04
21
Observações 2/2• A execução da função cria uma nova tabela de símbolos,
específica para a função.
• Variáveis declaradas dentro da função são unicamentelocais!
• São destruídas após a execução de toda a função.
• Funções tem acesso à variáveis com escopo global.
• Utilizando a cláusula global você pode acessar/modificarvariáveis globais.
Python Aula 04
22
Algumas funções especiais
... e Python também tem seu momento funcional!
Python Aula 04
23
Notação lambda• Funções podem ser definidas sem precisar de rótulos!
• Isto é muito útil quando você quer passar uma pequena função comoargumento para outra função
• Apenas funções simples (única expressão) podem ser definidas nessanotação.
• Notação lambda tem um histórico rico em linguagens de programaçãodesde I.A. passando por LISP, haskell...
Python Aula 04
24
Notação lambda
Python Aula 04
25
Notação lambda
Python Aula 04
26
Notação lambda
Python Aula 04
27
Funções map, reduce e filter
• Função map(func, seq)
Python Aula 04
28
Funções map, reduce e filter
• Função map(func, seq)
• Função interna que aplica uma função func a cada item de um objetosequência (seq) e retorna uma lista com os resultados da chamada da
função.
Python Aula 04
29
Funções map, reduce e filter• Função map(func, seq)
Python Aula 04
30
Funções map, reduce e filter• Função map(func, seq)
Python Aula 04
Observação: após utilizar o objeto MAP, o resultado é zerado.
31
Funções map, reduce e filter
• Função filter(func, seq)
Python Aula 04
32
Funções map, reduce e filter
• Função filter(func, seq)
Python Aula 04
33
Funções map, reduce e filter• Função filter(func, seq)
• Função interna que aplica uma função filtro func a cada item de umobjeto sequência (seq) e retorna uma lista com os resultados quesatisfazem os critérios da função de teste seq.
Python Aula 04
34
Funções map, reduce e filter• Função filter(func, seq)
• Exemplo de utilização→ remoção de dados faltantes
Python Aula 04
35
Funções map, reduce e filter• Função filter(func, seq)
• Outro exemplo mais complexo….
Python Aula 04
36
Funções map, reduce e filter
• Combinando MAP com FILTER
Python Aula 04
37
Funções map, reduce e filter
•Função reduce(func, seq)
•Função que aplica a função sobre o valor corrente retornado pela função(func) junto com o próximo item da lista. Import de functools
Python Aula 04
38
Funções map, reduce e filter•Função reduce(func, seq)
Python Aula 04
39
Funções map, reduce e filter•Função reduce(func, seq)
Python Aula 04
40
Funções map, reduce e filter•Função reduce(func, seq)
Python Aula 04
41
Funções Any e All
Python Aula 04
all()
any()
42
Função sorted()
Python Aula 04
Trabalha igual ao sort() para listas...Entretanto, atua sobre qualque iterável... Inclusive listas.Não altera a original. Cria uma nova!
43
Função zip
Python Aula 04
44
Funções geradoras e iteradores
• Função enumerate
- Função que gera uma tupla (índice, item da tupla) que ajuda na manipulação desequências e dicionários.
• Função yield value
- Função interna poderosa para gerar valores a medida que for chamada.
• Função iter(sequencia/dicionario)
- Função para produzir objetos iteradores em resposta à função interna iter.
Python Aula 04
45
List Comprehension
Python Aula 04
46
List Comprehension
Python Aula 04
47
List Comprehension
Python Aula 04
48
Generators
Python Aula 04
49
Generators
Python Aula 04
50
Generators
Python Aula 04
51
Generators
Python Aula 04
52
Módulos
... Módulos: o que é, como criar e como utilizar.
Python Aula 04
53
Introdução 1/2
• Quando você encerra o interpretador, todas as definições devariáveis e funções são perdidas;
• Solução é gerar um script e roda-lo.
• Mas e se você desejar utilizar um determinada função do scriptem outro programa?
Solução são os módulos!
Python Aula 04
54
Introdução 2/2• Um módulo é um arquivo .py contendo definições e comandos
Python:
- Funções
- Variáveis e constantes
- Classes
- ...
• Vantagem é a possibilidade de adicionar todas estas definiçõesem outros arquivos ou módulos.
• Isto é feito utilizando a cláusula import
Python Aula 04
55
Executando módulos como scripts
• Rodar um módulo Python é similar a importar as definições domódulo para o interpretador.
• Se você fizer python meuModulo.py irá carregar as definições e destruir logo
em seguida!
• Para executar algum determinado código de maneira similar àum script você deve testar a cláusula __name__ :
if __name__ == “__main__”:
print “Execute algum código”
Python Aula 04
56
Pacotes• Pacotes são coleções de módulos Python.
• Qualquer diretório do sistema operacional que contém um arquivo__init__.py dentro é considerado um pacote.
• Pacotes organizam módulos e permitem que programadores importemmódulos da seguinte maneira:
• import meuPacote.meuSubPacote.meuModulo
# meuPacote/
# __init__.py -- vazio
# meuSubPacote/
# __init__.py -- vazio
# meuModulo.py -- modulo importado
Python Aula 04
57
Pacotes (2)• Python dá suporte à hierarquia de pacotes onde
podemos ter uma árvore de pacotes separadaspor pastas
• O arquivo __init__.py é quem caracteriza umpacote
Python Aula 04
58
Pacotes (3)• O comando from <modulo> import * não funciona por default
• Deve-se adicionar o atributo __all__ dentro do arquivo __init__.py dopacote
Python Aula 04
59
Caminho de busca dos módulos• Quando você executa import meuModulo o interpretador
procura pelo arquivo meuModulo.py seguindo umadeterminada regra.
- Primeiramente ele procura pelo arquivo no diretório corrente (onde o interpretadorfoi executado).
- Caso ele não encontre o arquivo no diretório corrente, a busca prossegue em umalista de diretórios que é especificada na variável sys.path
• Você pode atribuir novos diretórios de busca na variávelsys.path (ela é uma lista dentro do módulo sys da bibliotecapadrão)
Python Aula 04
60
Compilando um módulo Python
... Compilando??? Como assim??? Python não é interpretado???
Python Aula 04
?
61
Compilando um módulo Python
• Sim, Python é e continua sendo interpretada!
- Python utiliza o conceito de byte-code (muito conhecido em Java).
• O que acontece quando você importa um módulo:
1) - Interpretador busca pelo arquivo .py correspondente;
2) - Arquivo .py é “compilado” para o byte-code reconhecido pelo interpretador;
3) - Byte-Code é incorporado a tabela de símbolos correntes do interpretador.
Python Aula 04
62
Compilando um módulo Python
• Compilação para byte-code pode ser um gargalo dedesempenho quando você carregar um programa!
- Especialmente se você utiliza muitos módulos em seu programa.
• Solução é pré-compilar os módulos antes de rodar seuprograma!
Python Aula 04
63
Como compilar
• Nas novas versões da linguagem a pré-compilagem é realizadaautomaticamente.
- Interpretador também controla as modificações nos módulos e reproduz as mesmasno byte-code.
• Algumas dicas de otimização:
- Invoque o interpretador com a opção -O. Isto gera código mais otimizado;
- Otimizações realizadas pela pré-compilagem e pelo -O influenciam somente avelocidade em que os módulos são carregados e não executados;
- Você pode rodar só a versão ótimizada de seu módulo (.pyc) sem a necessidade dedo arquivo .py original.
Python Aula 04
64
Como compilar
Python Aula 04
65
Módulos da biblioteca padrão
... O poder de python agora!
Python Aula 04
66
Módulo math• Disponibiliza uma série de funções e constantes matemáticas
que auxiliam na criação de aplicações científicas.
math.sqrt(numero): Retorna a raiz quadrada do número;
math.cos(numero): Retorna o cosseno do número em radiano;
maht.sin(numero): Retorna o seno do número em radiano;
math.tan(numero): Retorna a tangente do número em radiano;
math.radians(numero): Converte o angulo ‘numero’ de graus para radiano;
math.hypot(x, y): Retorna a hipotenusa dos números (catetos) fornecidos;
math.pi: Constante que represente o número pi (3.141592...).
Python Aula 04
The Python Standard Python Library - math
http://docs.python.org/library/math.html
67
Outros módulos numéricos e matemáticos
numbers: manipulação de dados numéricos
http://docs.python.org/library/numbers.html
cmath - Funções matemáticas para números complexos
http://docs.python.org/library/cmath.html
random - Geração de números randomicos
http://docs.python.org/library/random.html
Python Aula 04
68
Módulo sys• Funções/constantes que acessam e manipulam o interpretador.
sys.argv: Lista que contém os argumento passados por parâmetro em um script;
sys.path: Lista com os diretórios de busca do interpretador;
sys.platform: Retorna a plataforma em que o interpretador está rodando;
sys.stdin: Manipulação do stream de entrada;
sys.stdout: Manipulação do stream de saída;
sys.stderr: Manipulação do stream de erro;
Python Aula 04
The Python Standard Python Library - sys
http://docs.python.org/library/sys.html
69
Módulo sys
Python Aula 04
70
Módulo os• Interface para operações com o sistema operacional
os.open(filename, mode): Abre um arquivo do sistema de arquivos;
os.read(file, buffersize): Lê uma determinada fração de um arquivo aberto;
os.write(file, string): Escreve uma determinada string em um arquivo aberto;
os.chmod(file, mode): Altera as permissões de um arquivo;
os.chdir(path): Altera o diretório de trabalho corrente;
os.getenv(key): Retorna uma determinada variável de ambiente do SO;
os.getlogin(): Retorna o login do usuário que está rodando o interpretador;
os.kill(pid): Mata um determinado processo do SO.
Python Aula 04
The Python Standard Python Library - os
http://docs.python.org/library/os.html
71
Módulo re• Módulo responsável pela criação e manipulação de expressões
regulares
• Expressões Regulares é uma forma avançada de mexer comstrings
• Permite que você crie condições para que um trecho sejaencontrado, substituído ou tratado de alguma forma
Python Aula 04
72
Módulo re• Usa-se raw string (string cruas) r “”
• Podemos definir repetição, ocorrência
• Há duas formas de usar:
• Definindo um objeto expressão regular, compilando uma stringde definição
• Usando um comando re passando como argumento uma stringdefinindo uma regexp
Python Aula 04
73
Módulo re• Define-se uma expressão regular e a compila usando o
comando compile
• Pode-se usar expressões comentadas para auxiliar oentendimento do funcionamento da regexp
Python Aula 04
74
Outros MódulosData Compression - zlib, gzip, bz2, zipfile, tarfile
http://docs.python.org/library/archiving.html
Criptografia - hashlib, hmac, mds, sha
http://docs.python.org/library/crypto.html
Linguagens de marcação - sgmlib, htmllib, xml
http://docs.python.org/library/markup.html
Internet - webbrowser, cgi, httplib, ftplib, poplib, smtplib, SocketServer
http://docs.python.org/library/internet.html
Python Aula 04
75
Outros MódulosMultimedia- audioop, imageop, wave
http://docs.python.org/library/mm.html
Internacionalização - gettext, locale
http://docs.python.org/library/i18n.html
Interface Gráfica - Tkinter (TCL/TK)
http://docs.python.org/library/tk.html
Desenvolvimento - pydoc, doctest, unittest
http://docs.python.org/library/development.html
Debug - bdb, pdb
http://docs.python.org/library/debug.html
Python Aula 04
76
Outros MódulosDate e Horário- date, time, datetime, timedelta, tzinfo, timezone
http://docs.python.org/library/datetime.html
Tempo – time.asctime([t]), time.clock(), time.localtime([secs])
http://docs.python.org/library/time.html
Calendário- calendar.iterweekdays(), …
http://docs.python.org/library/calendar.html
Python Aula 04
77
Adicional
Python Aula 04
78
Tratamento de Erros…
Python Aula 04
try:...
except:...
79
Tratamento de Erros…
Python Aula 04
try:...
except:...
Else:...Finally:...