Você está na página 1de 65

Python: Funes, Mdulos e a Biblioteca Padro

Marcel Pinheiro Caraciolo


Python Aula 04

Comando print

Python Aula 04

Comando print

Python Aula 04

Funes
...Seu programa tendo cara de programa!

Python Aula 04

Definindo Funes
Definio da funo inicia com def

Python Aula 04

Definindo Funes
Definio da funo inicia com def Nome da funo

Python Aula 04

Definindo Funes
Definio da funo inicia com def Nome da funo Argumentos

Python Aula 04

Definindo Funes
Definio da funo inicia com def Nome da funo Argumentos Identao

Python Aula 04

Definindo Funes
Definio da funo inicia com def Nome da funo Argumentos Identao

return indica o retorno da funo

Python Aula 04

Definindo Funes
Definio da funo inicia com def Nome da funo Argumentos Identao

return indica o retorno da funo


Sem header file Sem declarao do tipo de retorno da funo ou do tipo dos argumentos
Python Aula 04

10

Chamando uma funo

Sintaxe bsica para chamar uma funo:


>>> def myfun(x, y): return x * y >>> myfun(3, 4) 12

Python Aula 04

11

Passagem de parmetros
>>> def myfun(x, y): return x * y >>> myfun(3, 4) 12 >>> myfun(y=3, x=4) 12 >>> myfun(3, y=4) 12

Vrias mtricas podem ser usadas na passagem dos parmetros de uma funo:

Python Aula 04

12

Parmetros com valores padres

Cada parmetro pode ter um valor padro.


Utilizado quando um parmetro omitido na chamada da funo

def myfun(x, y = 0.3, prompt = True): res = x * y if prompt: print Resposta %f, res return res

Python Aula 04

13

Parmetros com valores padres


Esta funo pode ser invocada de vrias formas:
def myfun(x, y = 4, prompt = True): res = x * y if prompt: print Resposta %i, res return res

>>> myfun(3) Resposta 12 12 >>> myfun(x=3, prompt = False) 12 >>> myfun(5, 2, False) 10
Python Aula 04

14

Parmetros com valores padres


Valores default so avaliados apenas uma vez

Objetos mutveis (listas, chamadas anteriores

dicionrios)

armazenam

Python Aula 04

15

Mltiplos argumentos

Podem receber um nmero arbitrrio de keywords

Python Aula 04

16

Mltiplos argumentos

Podem receber inclusive listas e dicionrios.

Python Aula 04

17

Valor de retorno

Toda funo em Python retorna alguma valor;


Mesmo funes que no possuem a clusula
return.

Funes que no possuem return retornam None.


None uma constante especial definida na linguagem; Similar a NULL, void, ou nil em outras linaguagens; lgicamente equivalente False; O interpretador no imprime None.

Python Aula 04

18

Valor de retorno
>>> 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

19

Observaes 1/2


Funes podem ser utilizadas da mesma maneira que outro tipo de dado em Python Elas podem ser:
Argumentos para outras funes; Valores de retorno de outras funes;

Atribudas para outras variveis;


Partes de tuplas, listas, etc;

...

Python Aula 04

20

Observaes 2/2


A execuo da funo cria uma nova tabela de smbolos, especfica para a funo.
Variveis declaradas dentro da funo so unicamente locais! So destrudas aps a execuo de toda a funo.

Funes tem acesso variveis com escopo global.


Utilizando a clusula global voc pode acessar/modificar variveis globais.

Python Aula 04

21

Exerccio 01

Python Aula 04

22

Algumas funes especiais


... e Python tambm tem seu momento funcional!

Python Aula 04

23

Notao lambda


Funes podem ser definidas sem precisar de rtulos!
Isto muito til quando voc quer passar uma pequena funo como argumento para outra funo Apenas funes simples (nica expresso) podem ser definidas nessa notao.

Notao lambda tem um histrico rico em linguagens de programao desde I.A. passando por LISP, haskell...

Python Aula 04

24

Notao lambda

Python Aula 04

25

Funes map, reduce e filter


Funo map(func, seq)
Funo interna que aplica uma funo func a cada item de um objeto sequncia (seq) e retorna uma lista com os resultados da chamada da funo.

Python Aula 04

26

Funes map, reduce e filter


Funo reduce(func, seq)
Funo
funo interna que aplica a funo sobre o valor corrente retornado pela (func) junto com o prximo item da lista.

Python Aula 04

27

Funes map, reduce e filter


Funo filter(func, seq)
Funo interna que aplica uma funo filtro func a cada item de um objeto sequncia (seq) e retorna uma lista com os resultados que satisfazem os critrios da funo de teste seq.

Python Aula 04

28

Funes geradoras e iteradores

Funo enumerate
Funo que gera uma tupla (ndice, item da tupla) que ajuda na manipulao de sequncias e dicionrios.

Funo yield value


Funo interna poderosa para gerar valores a medida que for chamada.

Funo iter(sequencia/dicionario)
Funo para produzir objetos iteradores em resposta funo interna iter.

Python Aula 04

29

Exerccio 02

Dado um conjunto de palavras [fita, Adenilton, armario, gaveta, Bruna, adentro, folga, impressora]. Montar um filtro que remova todas as palavras que comecem com A ou a.
Calcule o quadrado dos nmeros pares entre o intervalo de 0 a 10.

Python Aula 04

30

Mdulos
... Mdulos: o que , como criar e como utilizar.

Python Aula 04

31

Introduo 1/2

Quando voc encerra o interpretador, todas as definies de variveis e funes so perdidas;


Soluo gerar um script e roda-lo.

Mas e se voc desejar utilizar um determinada funo do script em outro programa?


Soluo so os mdulos!

Python Aula 04

32

Introduo 2/2
Um mdulo um arquivo .py contendo definies e comandos Python:
Funes Variveis e constantes Classes

...

Vantagem a possibilidade de adicionar todas estas definies em outros arquivos ou mdulos.


Isto feito utilizando a clusula import

Python Aula 04

33

Executando mdulos como scripts

Rodar um mdulo Python similar a importar as definies do mdulo para o interpretador.


Se voc fizer python meuModulo.py ir carregar as definies e destruir logo em seguida!

Para executar algum determinado cdigo de maneira similar um script voc deve testar a clusula __name__ :
if __name__ == __main__: print Execute algum cdigo

Python Aula 04

34

Pacotes

Pacotes so colees de mdulos Python.


Qualquer diretrio do sistema operacional que contm um arquivo __init__.py dentro considerado um pacote.

Pacotes organizam mdulos e permitem que programadores importem mdulos da seguinte maneira:

import meuPacote.meuSubPacote.meuModulo
# meuPacote/ # __init__.py -- vazio # meuSubPacote/ # __init__.py -- vazio # meuModulo.py -- modulo importado

Python Aula 04

35

Pacotes (2)

Python d suporte hierarquia de pacotes onde podemos ter uma rvore de pacotes separadas por pastas

O arquivo __init__.py quem caracteriza um pacote


Python Aula 04

36

Pacotes (3)

O comando from <modulo> import * no funciona por default Deve-se adicionar o atributo __all__ dentro do arquivo __init__.py do pacote

Python Aula 04

37

Caminho de busca dos mdulos Quando voc executa import meuModulo o interpretador
procura pelo arquivo meuModulo.py seguindo uma determinada regra.

Primeiramente ele procura pelo arquivo no diretrio corrente (onde o interpretador foi executado). Caso ele no encontre o arquivo no diretrio corrente, a busca prossegue em uma lista de diretrios que especificada na varivel sys.path

Voc pode atribuir novos diretrios de busca na varivel sys.path (ela uma lista dentro do mdulo sys da biblioteca padro)

Python Aula 04

38

Exerccio 03

Python Aula 04

39

Compilando um mdulo Python


... Compilando??? Como assim??? Python no interpretado???

Python Aula 04

40

Compilando um mdulo 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 mdulo:


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 smbolos correntes do interpretador.

Python Aula 04

41

Compilando um mdulo Python

Compilao para byte-code pode ser um gargalo de desempenho quando voc carregar um programa!
Especialmente se voc utiliza muitos mdulos em seu programa.

Soluo pr-compilar os mdulos antes de rodar seu programa!

Python Aula 04

42

Como compilar

Nas novas verses da linguagem a pr-compilagem realizada automaticamente.


Interpretador tambm controla as modificaes nos mdulos e reproduz as mesmas no byte-code.

Algumas dicas de otimizao:


Invoque o interpretador com a opo -O. Isto gera cdigo mais otimizado;
Otimizaes realizadas pela pr-compilagem e pelo -O influenciam somente a velocidade em que os mdulos so carregados e no executados; Voc pode rodar s a verso timizada de seu mdulo (.pyc) sem a necessidade de do arquivo .py original.

Python Aula 04

43

Como compilar

Python Aula 04

44

Mdulos da biblioteca padro


... O poder de python agora!

Python Aula 04

45

Mdulo math


Disponibiliza uma srie de funes e constantes matemticas que auxiliam na criao de aplicaes cientficas.
math.sqrt(numero): Retorna a raiz quadrada do nmero;

math.cos(numero): Retorna o cosseno do nmero em radiano;


maht.sin(numero): Retorna o seno do nmero em radiano; math.tan(numero): Retorna a tangente do nmero em radiano; math.radians(numero): Converte o angulo numero de graus para radiano; math.hypot(x, y): Retorna a hipotenusa dos nmeros (catetos) fornecidos; math.pi: Constante que represente o nmero pi (3.141592...).
Python Aula 04

46

Referncias - math
The Python Standard Python Library - math
http://docs.python.org/library/math.html

math - Some Functions


http://www2.informatik.hu-berlin.de/Themen/manuals/python/python-texinfo/math.html

Python Aula 04

47

Outros mdulos numricos e matemticos


numbers: manipulao de dados numricos
http://docs.python.org/library/numbers.html

cmath - Funes matemticas para nmeros complexos


http://www2.informatik.hu-berlin.de/Themen/manuals/python/python-texinfo/math.html

random - Gerao de nmeros randomicos


http://docs.python.org/library/random.html

Python Aula 04

48

Mdulo sys


Funes/constantes interpretador. que acessam e manipulam o
sys.argv: Lista que contm os argumento passados por parmetro em um script; sys.path: Lista com os diretrios de busca do interpretador;

sys.platform: Retorna a plataforma em que o interpretador est rodando;


sys.stdin: Manipulao do stream de entrada; sys.stdout: Manipulao do stream de sada; sys.stderr: Manipulao do stream de erro;

Python Aula 04

49

Mdulo sys

Python Aula 04

50

Referncias - sys
The Python Standard Python Library - sys
http://docs.python.org/library/sys.html

The Python Sys Module


http://effbot.org/librarybook/sys.htm

Python Aula 04

51

Mdulo os


Interface para operaes com o sistema operacional
os.open(filename, mode): Abre um arquivo do sistema de arquivos;

os.read(file, buffersize): Le uma determinada frao de um arquivo aberto;


os.write(file, string): Escreve uma determinada string em um arquivo aberto; os.chmod(file, mode): Altera as permisses de um arquivo; os.chdir(path): Altera o diretrio de trabalho corrente; os.getenv(key): Retorna uma determinada varivel de ambiente do SO; os.getlogin(): Retorna o login do usurio que est rodando o interpretador; os.kill(pid): Mata um determinado processor do SO.

Python Aula 04

52

Referncias - os
The Python Standard Python Library - os
http://docs.python.org/library/os.html

Python: module os
http://pydoc.org/1.6/os.html

Python Aula 04

53

Mdulo re
Mdulo responsvel pela criao e manipulao de expresses regulares
Expresses Regulares uma forma avanada de mexer com strings

Permite que voc crie condies para que um trecho seja encontrado, substitudo ou tratado de alguma forma

Python Aula 04

54

Mdulo re
Usa-se raw string (string cruas) r

Podemos definir repetio, ocorrncia


H duas formas de usar: Definindo um objeto expresso regular, compilando uma string de definio Usando um comando re passando como argumento uma string definindo uma regexp

Python Aula 04

55

Mdulo re

Define-se uma expresso regular e a compila usando o comando compile

Pode-se usar expresses comentadas para auxiliar o entendimento do funcionamento da regexp

Python Aula 04

56

Outros Mdulos
Data 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

Criptografia - hashlib, hmac, mds, sha


http://docs.python.org/library/crypto.html

Linguagens de marcao - 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

57

Outros Mdulos
Multimedia- audioop, imageop, wave
http://docs.python.org/library/mm.html

Internacionalizao - gettext, locale


http://docs.python.org/library/i18n.html

Interface Grfica - 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

58

STD Lib - Documentao


The Python Standard Python Library
http://docs.python.org/library/

(the eff-bot guide to) The Standard Python Library


http://effbot.org/zone/librarybook-index.htm

Python Aula 04

59

Exerccio 04

Modifique o programa de cpia de arquivos da aula 03 para receber o nome dos arquivos de origem e destino pela linha de comando.

Python Aula 04

60

Exerccio 05

Python Aula 04

61

Exerccio 06

Python Aula 04

62

Adicional

Python Aula 04

63

Referncias

Python Aula 04

64

Python: Funes, Mdulos e a Biblioteca Padro


Marcel Pinheiro Caraciolo
Python Aula 04

65

Você também pode gostar