Aula 19

Python online

Python Tutorial

Standard library

pacotes/modulos

Pacotes pre definidos

import math

math.sin(3.14)
from math import sin,cos

sin(3.14)
import math as ma

ma.sin(3.14)

Veja o link para o standard library

Pacotes externos - requer instalacao pip ou conda

A interface para os modulos é normalmente através de objetos.

Exemplo de https://docs.python.org/3/howto/urllib2.html#urllib-howto

import urllib.request
with urllib.request.urlopen('http://www.python.org/') as f:
    print(f.read(300))

urllib.request.urlopen('http://www.python.org/') retorna um objeto do tipo bytes que tem o método read.

sklearn para aprendizado de maquina: https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

classificador = SVC(parametro1=...) # seta os parametros
classificador.fit(dados)  # treina
resultado = classificador.predict(dados_novos) # usa nos dados novos

Mas nem sempre - todas as funções em math e algumas no scipy são funções e não objetos/métodos

Programação funcional

funcoes anônimas

lambda mas a funcao so pode ter 1 linha

lambda x : x > 0 

map, filter

map(lambda x : x+3, [4,5,6,7])

filter(lambda x: x>0, [4,-5,6,-7])

mas use o list comprehension em vez de map+filter

fold (reduce)

foldl:

from functools import reduce

reduce(combinacao, lista, inicial)

funções que recebem funções como um argumento extra

key: uma funçao que é aplicada em cada elemento e cujo valor é usa

max( iteratable, key=func)
list.sort(key=func)
sorted( iteratable, key=func)
max(lista,key=func)
=
max([(func(x),x) for x in lista])[1]

modulo operator

x[i] ou x['chave'] ou x.chave podem ser convertidos em funções para o argumento x

Debug

em python modulo pbd https://docs.python.org/3/library/pdb.html

>>> import pdb
>>> import mymodule
>>> pdb.run('mymodule.test()')

ou

python3 -m pdb meuprog.py

Exemplo https://realpython.com/python-debugging-pdb/

video https://www.youtube.com/watch?v=6RkGmqcfiTw

breakpoint

interrompe a execução e entra no modo debug

coloque

breakpoint()

na linha do código.

ou (isso é o que realmente acontece)

import pdb; pdb.set_trace()

o prompt muda para (pdb)

ponto da execução

antes da execução de uma linha de codigo

next (n)

executa ate a proxima linha da mesma função

--> m = func(4)
    proc(m+5)

next executa m=func(4) e vai para antes de proc(m+4)

step (s)

entra no debug da proxima função na execução, nesse caso entra e para na 1a linha de func

continue

roda normalmente até o fim do programa ou ate o proximo breakpoint

inspecionar e modificar o estado

print var

interact cria um REPL neste ponto (com acesso a variáveis locais)

é possivel trocar o valor de variaveis locais e continuar a execução usando os novos valores

mover na pilha de execução (e inspecionar o estado nela)

up (função que chamou) e down

checagem de tipo em tempo de execução

variável x

isinstance(x, str)

ou

type(x) is srt

type hints

https://www.python.org/dev/peps/pep-0484/

def soma(x: int, y: int):

mas ok rodar

soma('3','4')

vc precisa rodar usando um interpretador estendido mypy

linguagem para definir os tipos

voce precisa de uma linguagem para definir tipos complexos e é isso que o PEP define