Anda di halaman 1dari 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:


>>>defmyfun(x,y):
returnx*y
>>>myfun(3,4)
12

Python Aula 04

11

Passagem de
parmetros

Vrias mtricas podem ser usadas na passagem


dos parmetros de uma funo:
>>>defmyfun(x,y):
returnx*y
>>>myfun(3,4)
12
>>>myfun(y=3,x=4)
12
>>>myfun(3,y=4)
12

Python Aula 04

12

Parmetros com valores


padres

Cada parmetro pode ter um valor padro.

Utilizado quando um parmetro omitido na chamada da funo

defmyfun(x,y=0.3,prompt=True):
res=x*y
ifprompt:
printResposta%f,res

returnres

Python Aula 04

13

Parmetros com valores


padres

Esta funo pode ser invocada de vrias formas:


defmyfun(x,y=4,prompt=True):
res=x*y
ifprompt:
printResposta%i,res

returnres

>>>myfun(3)
Resposta12
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, dicionrios) armazenam
chamadas anteriores

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

clusula

return.

Funes que no possuem returnretornam None.

None uma constante especial definida na linguagem;


Similar a NULL, void, ou nil em outras linaguagens;
lgicamente equivalente False;
O

interpretador

no

imprime

Python Aula 04

18

None.

Valor de retorno
>>>defteste():
x=1
y=2
z=3
returnx,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

execuo

de

toda

funo.

Funes tem acesso variveis com escopo global.

Utilizando a
variveis

clusula

global voc pode acessar/modificar


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 interna que aplica a funo sobre o valor corrente retornado


pela

funo

(func)

junto

com

prximo

item

Python Aula 04

27

da

lista.

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

Mas

roda-lo.

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__:
printExecutealgumcdigo

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


importem mdulos da seguinte maneira:

que

programadores

importmeuPacote.meuSubPacote.meuModulo
#meuPacote/
#__init__.pyvazio
#meuSubPacote/
#__init__.pyvazio
#meuModulo.pymoduloimportado

Python Aula 04

35

Pacotes (2)

Python

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

arquivo
caracteriza

__init__.py
um

quem
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


Quando voc executa import meuModulo
mdulos

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;

3) - Byte-Code incorporado a tabela de smbolos correntes do


interpretador.

2) - Arquivo .py compilado para o byte-code reconhecido pelo


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


compilagem realizada automaticamente.

pr-

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.hypot(x, y): Retorna a hipotenusa dos nmeros (catetos)


fornecidos;

math.pi: Constante que represente o nmero pi (3.141592...).

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;

Python Aula 04

46

Referncias - math
The Python Standard PythonLibrary - 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

que acessam e manipulam o

interpretador.

sys.argv: Lista que contm os argumento passados por parmetro em


um script;

sys.path: Lista com os diretrios de busca do interpretador;

sys.stdin: Manipulao do stream de entrada;

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


rodando;

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 PythonLibrary - 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
operacional

operaes

com

sistema

os.open(filename, mode): Abre um arquivo do sistema de arquivos;

os.write(file, string): Escreve uma determinada string em um


arquivo aberto;

os.chmod(file, mode): Altera as permisses de um arquivo;

os.getlogin(): Retorna o login do usurio que est rodando o


interpretador;

os.kill(pid): Mata um determinado processor do SO.

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


aberto;

os.chdir(path): Altera o diretrio de trabalho corrente;


os.getenv(key): Retorna uma determinada varivel de ambiente do
SO;

Python Aula 04

52

Referncias - os
The Python Standard PythonLibrary - 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 PythonLibrary
http://docs.python.org/library/

(the eff-bot guide to) The Standard PythonLibrary


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

Anda mungkin juga menyukai