Python 3.x Bibliotecas Introdução à Ciência da Computação Prof. Edison Ishikawa
Sumário Módulo Namespace Escopo de nomes Operado ponto Pacotes Biblioteca Padrão Bibliotecas de terceiros
Módulos São Arquivos-fonte que podem ser importados por um programa Exemplo de importação absoluta >>>import math >>>math.sqrt(3**2 + 4**2) 5 Exemplo de importação relativa >>>from math import sqrt >>>sqrt(3**2 + 4**2) 5 É melhor usar importação absoluta. Importação relativa pode causar problemas, como ofuscação de variáveis etc. Exemplo de importação relativa de todo o módulo >>>from math import * >>>sqrt(3**2 + 4**2) 5 Note o caractere asterisco
Namespace É uma coleção de identificadores que pertencem a um módulo, função ou classe Namespaces agregam coisas relacionadas, por exemplo todas as funções matemáticas Exemplo >>> from math import * >>> help(math) Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> help(math) NameError: name 'math' is not defined >>> >>> import math >>> help(math) Help on built-in module math: Como foi feita importação relativa o namespace math não existe. Logo dá erro quando o chamo namespace math agrega todas as funções matemáticas NAME math DESCRIPTION This module is always available. It provides access to the mathematical functions defined by the C standard. FUNCTIONS acos(...) acos(x) Return the arc cosine (measured in radians) of x. acosh(...) acosh(x) Return the inverse hyperbolic cosine of x.
Escopo de nomes Escopo de um identificador é a região do código do programa em que o identificador pode ser acessado ou usado Existem 3 escopos importantes em Python Escopo Local Se refere a identificadores declarados dentro de uma função Cada função tem seu próprio namespace Escopo Global Se refere a todos os identificadores dentro do módulo corrente ou do arquivo Escopo Embutido (built-in scope) Se refere a todos os identificadores construídos dentro do Python Aqueles que podem ser usados sem a necessidade de importar módulos e estão (quase) sempre disponíveis Exemplo: range e min
Escopo de nomes O mesmo nome pode ocorrer em mais de um dos escopo de Python Global Local e Built-in Qual é o que pode ser acessado ou usado? Regras de precedência O escopo mais interno, ou local, sempre tem precedência sobre o escopo global O escopo global sempre tem preferência sobre o escopo built-in
O operador. ponto Atributos e funções são acessados usando o operador ponto (. ) Também podemos importar um módulo dando um nome diferente pra ele Exemplo >>>import math as m >>>m.pi 3.141592653589793 >>>m.cos(m.pi/3) 0.5000000000000001
Pacotes (Packages) Pacotes regulares são pastas que são identificadas pelo interpretador pela presença de um arquivo com o nome init.py Pacotes funcionam como coleções para organizar módulos de forma hierárquica
Criando módulos Basta salvar o script com a extensão.py Suponha o script icc.py Exemplo: icc.py def mensagem( ): print( Programar só se aprende programando! ) return 0 Para usá-lo basta importar no seu programa Exemplo import icc icc.mensagem( )
Biblioteca Padrão Biblioteca de módulos e pacotes que é distribuída com o interpretador Python Matemática: math, cmath, decimal, random Sistema: os, glob, subprocess Threads: threading Persistência: pickle, marshall XML: xml.dom, xml.sac, xml.treee Configuração: configparser, optparse Tempo: time, datetime Outros: sys, logging, traceback, types, timeit...
Números aleatórios Frequentemente usamos números aleatórios nos nossos programas: Para desenvolver jogos em que o computador precise jogar um dado ou lançar uma moeda Para embaralhar uma pilha de cartas aleatoriamente Para simular o regime de chuvas de uma determinada região com um modelo computacional para estimar o impacto ambiental em se construir uma represa hidrelétrica Exemplo import random rng = random.random( ) # cria objeto que gera números pseudo-aleatórios jogar_dado = rng.randrange(1, 7) # retorna int entre 1 e 6 atraso_em_segundos = rng.random( )*5.0 cartas = list(range(52)) # gera um baralho com 52 cartas rng.shuffle(cartas) # embaralha as cartas
Módulo de tempo Para obter o tempo Para saber o desempenho do seu programa Basta obter o tempo no início e no final do programa Exemplo >>>import time >>>time.clock( ) # tempo da CPU do processo como float 3.924262932861295e-06 >>>time.localtime( ) time.struct_time(tm_year=2017, tm_mon=10, tm_mday=9, tm_hour=10, tm_min=21, tm_sec=11, tm_wday=0, tm_yday=282, tm_isdst=0) >>>help(time) Help on built-in module time: NAME time - This module provides various functions to manipulate time values. DESCRIPTION There are t..
Módulo math Contém funções matemáticas e algumas constantes Exemplo >>> import math >>> math.pi 3.141592653589793 >>> math.e 2.718281828459045 >>> math.sqrt(2.0) 1.4142135623730951 >>> math.radians(90) 1.5707963267948966 >>> math.sin(math.radians(60)) 0.8660254037844386
Biblioteca de terceiros Existem muitas bibliotecas disponíveis escritas por terceiros para Python Para instalar estas bibliotecas use o pip Exemplo: no prompt do S.O. usuario@maquina01:~$ pip install nome_do_pacote Downloading/unpacking nome_do_pacote Downloading......... usuario@maquina01:~$
Numpy Os tipos padrão de Python não são muito adequados para operações matemáticas Por exemplo, suponha a lista a = [2, 3, 5] multiplicada por um inteiro Exemplo >>> a = [2, 3, 5] >>> 2 * a [2, 3, 5, 2, 3, 5] O mesmo vale para a multiplicação por float Exemplo >>> a = [2, 3, 5] >>> 2.1 * a Traceback (most recent call last): File "<pyshell#25>", line 1, in <module> 2.1 * a TypeError: can't multiply sequence by non-int of type 'float'
Numpy Uma forma de resolver este problema em Python é: Exemplo: a = [ 2, 3, 5] b = [] for x in a: b.append(2.1 * x) Quebra-galho Jeitinho Forçação de barra Isto acontece por que as listas de Python não foram projetadas para serem um objeto matemático Lista em Python são apenas uma coleção de itens Para termos um tipo de lista que se comporte como um vetor ou uma matriz matemática, usamos a biblioteca Numpy
Numpy Provê: Um objeto do tipo vetor n-dimensional de itens homogêneos Operações matemáticas rápidas utilizando vetores/matrizes Ferramentas de Álgebra Linear Transformada de Fourier Geração de números aleatórios Operações em polinômios Operações com números complexos Etc
Numpy Como é uma biblioteca de terceiros é preciso instalá-lo antes de usar Exemplo no linux user@maquina01:/home/user/$ sudo pip install numpy No Windows, siga um dos vários tutoriais disponíveis na Web https://solarianprogrammer.com/2017/02/25/install-numpyscipy-matplotlib-python-3-windows/
Numpy Multiplicação Exemplo: >>> import numpy as np >>> a = np.array([2, 3, 5]) >>> 2.1 * a array ([4.2, 6.3, 10.5]) >>> a * a array ([4, 6, 10]) >>> a ** 2 array ([4, 6, 10]) >>> np.dot(a, a) 38
matplotlib É uma biblioteca para desenhar gráficos Python 2D que produz figuras de qualidade para publicação em uma grande variedade de formatos Você pode gerar gráficos, histogramas, diagramas de espectro, gráficos de barras, gráficos de erros, diagramas de dispersão, etc., com apenas algumas linhas de código Como toda biblioteca de terceiros precisa ser instalada antes de usar Exemplo de instalação no Linux user@maquina01:/home/user/$ sudo pip install matplotlib
matplotlib Exemplo: # An extra set of sample plots for the thumbnail image. import matplotlib.pyplot as plt import numpy as np np.random.seed(19680801) data = np.random.randn(2, 100) fig, axs = plt.subplots(2, 2, figsize=(5, 5)) axs[0, 0].hist(data[0]) axs[1, 0].scatter(data[0], data[1]) axs[0, 1].plot(data[0], data[1]) axs[1, 1].hist2d(data[0], data[1]) plt.show()
matplotlib
matplotlib
matplotlib
matplotlib Veja mais exemplos e tutoriais em: http://matplolib.org
SciPy Numpy Matplotlib Biblioteca Scipy: Estatística Processamento de sinais/imagens Estruturas de dados espaciais Biblioteca SymPy (computação simbólica) Exemplo: >>> integrate(cos(x), x) sin(x) >>> diff(cos(x), x) -sin(x)
SciPy https://github.com/splmc/reana-evaluator
Scikit-learn Aprendizado de máquina Classificação Regressão Agrupamento Útil em aplicações de inteligência artificial Baseada em Numpy, SciPy e Matplotlib
Outras bibliotecas Processamento de páginas web BeautifulSoup Jogos Pygame, Panda 3D Banco de dados - DBI Pymysql, sqlite3, postgresql, pymongo Aplicações Web Django Interface Gráfica PyQt Computação Gráfica Pillow, Vpython, OpenGL Plataformas portáteis (App para Android e IoS) Kivy
Outras bibliotecas Controle de câmera GoPro: https://github.com/deniscarriere/gopro Exemplo: >>> from gopro import GoPro >>> camera = GoPro.GoPro() >>> camera.photo() >>> camera.video() >>> camera.timelapse()
Framework Django É um framework para aplicações Web de alto nível Escrito em Python, incentiva o desenvolvimento rápido com um design limpo e pragmático Construído por desenvolvedores experientes, ele cuida de muitos dos problemas do desenvolvimento da Web, para que você possa se concentrar em escrever seu aplicativo sem precisar reinventar a roda É gratuito e de código aberto.
Sites feitos com Django/Python We all know YouTube as the place to upload cat videos and fails. As one of the most popular websites in existence, it provides us with endless hours of video entertainment. The Python programming language powers it and the features we love
Sites feitos com Django/Python Python also provides the power behind the most popular search engine in the world Google. The programming language can handle the traffic and computing needs of the search engine and its connected apps.
Sites feitos com Django/Python The National Aeronautics and Space Administration s official website is the place to find news, pictures, and videos about their ongoing space exploration. This Django website can easily handle huge amounts of views and traffic
Bibliografia How to Think Like a Computer Scientist: Learning with Python 3 Documentation - Release 3rd Edition Peter Wentworth, Jeffrey Elkner,Allen B. Downey and Chris Meyers Apr 26, 2017