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
lambda
mas a funcao so pode ter 1 linha
lambda x : x > 0
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
foldl:
from functools import reduce
reduce(combinacao, lista, inicial)
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]
x[i]
ou x['chave']
ou x.chave
podem ser convertidos em funções para o argumento x
itemgetter
- f = itemgetter(2)
entao f(x)
retorna x[2]
f = itemgetter(2,3,5)
entao f(x)
retorna (x[2],x[3],x[5])
attrgetter
- f = attrgetter("chave")
entao f(x)
retorna x.chave
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
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)
antes da execução de uma linha de codigo
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)
entra no debug da proxima função na execução, nesse caso entra e para na 1a linha de func
roda normalmente até o fim do programa ou ate o proximo breakpoint
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
up (função que chamou) e down
variável x
isinstance(x, str)
ou
type(x) is srt
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
voce precisa de uma linguagem para definir tipos complexos e é isso que o PEP define
int
e float
str