Post on 09-Jul-2015
description
Iniciando em
Rober Zanotto Guerra
O que é Python???Python é Legal!
Linguagem de Programação
Altíssimo nível
Sintaxe limpa
Orientada a Objetos, procedural e funcional
Tipagem forte e dinâmica
Interpretada
Modular
Multiplataforma
Fácil aprendizado
HistóriaCriador Guido Van Rossum -> Criatura Python
Meados de 1989
C, Haskell, Pearl,
SmallTalk, Modulla 3
Arquitetura em C
Monty Python
Onde utilizar?
Desktop - GUI
Desenvolvimento web
Computação Científica
Computação em Nuvem
Programação distribuída, para redes,
Gráficos, jogos, edições de imagens e videos
Scripts, plugins, complementos...
Onde Roda?
Linux – Windows – Mac – Unix – Android – iOS - Symbiam
Versões
Python 2.7.2 (11 junho, 2011)
Python 2.6.7 (3 junho, 2011)
Python 2.5.6 (26 maio, 2011)
Python 2.4.6 (19 dezembro, 2008)
Python 2.3.7 (11 março, 2008)
Python 2.2.3 (30 maio, 2003)
Python 2.1.3 (8 abril, 2002)
Python 2.0.1 (junho 2001)
Python 1.6.1 (setembro 2000)
Python 1.5.2 (abril 1999)Python 3* (???)
Python 3.2.2 (September 4, 2011)Python 3.1.4 (June 11, 2011)
Python 3.0.1 (February 13, 2009)
http://www.python.org/download/releases/
Quem usa?http://wiki.python.org/moin/OrganizationsUsingPython
Linha 1 Linha 2 Linha 3 Linha 40
2
4
6
8
10
12
Coluna 1Coluna 2Coluna 3
Frameworks e GUIs
Usuários
Como usamos Python
Onde Programar?IDEs
Komodo
NetBeans
PyCharm
PyDev
Wingide
Pyshield
Spyder
PythonToolkit (PTK)
PyStudio
IDES GUIs
MonkeyStudio
BoaConstructor
XCodeVisualPython
LicençaLicença própria (compatível com a GPL);
Permitida a distribuição, comercial ou não, tanto da linguagem quanto de aplicações desenvolvidas nela, em formato binário ou código
Copyright da PSF (Python Software Foundation)
http://www.python.org/download/releases/2.7.2/license/
Como Instalar?http://www.python.org/download/
# yum install python
# apt-get install python
2 cliques no Windows, next...next...finish!
Implementações
+ CaracterísticasCase sensitive
Interpretador dinâmico, MUITO DINÂMICO!
Tipos Primitivos
Tudo é Objeto,
TUDO MESMO!
Python fits
your mind!
O que faremos hoje Cérebro?Hoje vamos dominar o
Python!
Interpretador Interativo
Ainda não!O Zen do Python, por Tim Peters
Bonito é melhor que feio.Explícito é melhor que implícito.Simples é melhor que complexo.Complexo é melhor que complicado.Linear é melhor do que aninhado.Esparso é melhor que denso.Legibilidade conta.Casos especiais não são especiais o bastante para quebrar as regras.Ainda que praticidade vença a pureza.Erros nunca devem passar silenciosamente.A menos que sejam explicitamente silenciados.Diante da ambigüidade, recuse a tentação de adivinhar.Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo.Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês.Agora é melhor que nunca.Embora nunca frequentemente seja melhor que *já*.Se a implementação é difícil de explicar, é uma má ideia.Se a implementação é fácil de explicar, pode ser uma boa ideia.Namespaces são uma boa ideia — vamos fazer mais dessas!
Operadores Aritméticos
>>> valor = 10
>>> 1 + 1
2
>>> 5 - 1
4
>>> 2 * 3
6
>>> #5 / 2 = 2 0_o>>> 5 / 2
2>>> #aaahm...
>>> 5 / 2.0 2.5
>>> #exponenciação nativa *-*
>>> 4 ** 216
Operadores Lógicos
>>> 1 > 2
False
>>> 2 < 5
True
>>> 5 == 5
True
>>> 5 <> 2
True
>>> 1 != 0
True
>>> #Muito interessante:>>> x = 5
>>> 1 < x < 10True
>>> a,b = 5, 2>>> a > b or b > a
True>>> a == b and a > b
False>>> not a
False
Identação !?
Operadores de Strings>>> string = "Ola Python"
>>> len(string)
10
>>> string + '!'
'Ola Python!'
>>> string[:-1]
'Ola Pytho'
>>> string[0:3]
'Ola'
>>>
>>> 'A' * 10 #Ta de palhaçada néh!?
'AAAAAAAAAA'
>>> #acho que isso lembra C... ¬¬>>> "%d - %.2f - %s" % (1, 2.5, string)
'1 - 2.50 - Ola Python'
Troca de variáveis em 1 linha,sem variável auxiliar,
com apenas 1 comando!
Desafio - 1
!D-U-V-I-D-O!
YEEEAH!
A , B = B, A
Tipos Primitivos?
ISTO NON EXZISTE!
TUDO É OBJETO!
Simples assim...
Conversões de Tipos
>>>x,y = 5, ‘5’
>>>int(y)
5
>>> float(x)
5.0
>>> str(x)
‘5’
>>> tuple(x)
>>> list(x)
>>> dict(x)
Tipos Booleanos
Condicionais
Loops...
Mas Tchê! Cade o Swith?
dir(op1) help(dic)
Manipulando Listas
Parâmetros flexíveis>>>def soma(valor_1 = 10, valor_2 = 5):
>>> return int(valor_1) + int(valor_2)
>>> soma(1,1)
2
>>> soma(‘10’, 1)
11
>>> soma(valor_2=10, valor_1=20)
30
>>> Soma()
15
_Namespaces_locals()
>>> def verLocais():
>>> string = ‘texto’
>>> lista = [1,2,3]
>>> valor = 100
>>> print locals()
{‘string’: ‘texto’, ‘lista’: [1,2,3], ‘valor’: 100
globals()
ClassesPara quem sabe Java
Python não tem interfaces
Mas tem herança múltipla de classes
Python não tem sobrecarga de métodos
mas tem passagem de argumentos flexível
Classes
Somar 5 + 2 e resultar em 3
Desafio - 2
Sobrescrita de Métodos
>>> a = soma(5)
5
>>> b = soma(2)
2
>>> a + b
Funciona!!!
5 + 2 = 3
Debugipdb
# easy_install ipython ipdb
Linnha anterior ao erro: import ipdb; ipdb.set_trace()
>> next
>> exit
POR QUE PYTHON???
Por que é......Simplesmente elegante
...Legivel
...Fácil aprendizado
...Resolve todo tipo de Problema
...Procedural, OO, Multi paradigma
...é tudo o que você desejar...
Algo mais avançado...#THREAD SIMPLES -------------------
>>> class MyThread(t.Thread):
>>> def run(self, texto=’’):
>>> pint self.getName() +’ ‘+ texto
>>> thread_1 = MyThread(‘Primeira Thread’)
>>> thread_2 = MyThread(‘Segunda Thread’)
>>> thread_1.start()
>>> thread_2.start()
>>> print 'fim'
Especialistas sobre Python:Por Marinho Brandão - Na minha opinião, a informática é uma ciência que oferece ferramentas para facilitar o dia-a-dia. E ferramentas são assim: uma hora você precisa do martelo, outra hora do porrete, o martelo sozinho não resolve as coisas, ele precisa de um prego, uma tábua e do principal: o carpiteiro. Um carpinteiro qualificado saberia fazer com o martelo o mesmo que se faria com o porrete, e vice-versa, porque ele está preparado pra fazer aquilo. Outra metáfora que pode ilustrar aqui é o de comparar um sedã, uma scania e um trator. Digamos que o Python seja o sedã, o Java seja a scânia e o C seja o trator: cada um tem sua aplicabilidade.
Estudos
Duvidas?
roberzguerra@gmail.com