SlideShare una empresa de Scribd logo
1 de 37
Kaísy Nunes Alves
Moisés Cardozo de Paula
 Filosofia
 The Zen of Python
 Características
 Construções
 Tipos de dado
 Palavras reservadas
 Operadores
 Interpretador interativo
 Indentação
 Compilador de bytecode
 Polimorfismo
 Orientação a objeto
 Programação funcional
 Tratamento de exceções
 Biblioteca padrão
 Comentários
 Parte da cultura da linguagem gira ao redor
de The Zen of Python, um poema que faz
parte do documento "PEP 20 (The Zen of
Python)", escrito pelo programador em
Python de longa dataTim Peters,
descrevendo sumariamente a filosofia do
Python. Pode-se vê-lo através de um easter
egg do Python pelo comando:
 >>> import this
 Um easter egg é qualquer coisa oculta,
podendo ser encontrada em qualquer tipo de
sistema virtual. Easter egg é um segredo
virtual. O Livro de Mozilla, uma página
secreta exclusiva dos navegadores Mozilla
Firefox, Netscape e alguns outros antigos, é
um exemplo de easter egg.
 Beautiful is better than ugly.
 Explicit is better than implicit.
 Simple is better than complex.
 Complex is better than
complicated.
 Flat is better than nested.
 Sparse is better than dense.
 Readability counts.
 Special cases aren't special
enough to break the rules.
 Although practicality beats
purity.
 Errors should never pass
silently.
 Unless explicitly silenced.
 In the face of ambiguity, refuse
the temptation to guess.
 Bonito é melhor que feio.
 Explícito é melhor que implícito.
 Simples é melhor que complexo.
 Complexo é melhor que
complicado.
 Plano é melhor que aninhado.
 Esparso é melhor que denso.
 Legibilidade conta.
 Casos especiais não são especiais o
suficiente para quebrar as regras.
 Embora praticidade vença a pureza.
 Erros nunca devem passar em silêncio.
 A menos que explicitamente
silenciados.
 Diante da ambiguidade, recuse a
tentação de adivinhar.
 There should be one-- and
preferably only one --obvious
way to do it.
 Although that way may not be
obvious at first unless you're
Dutch.
 Now is better than never.
 Although never is often better
than right now.
 If the implementation is hard to
explain, it's a bad idea.
 If the implementation is easy to
explain, it may be a good idea.
 NameSpaces are one honking
great idea -- let's do more of
those!
 Deve haver um - e
preferencialmente só um -
modo óbvio para fazer isso.
 Apesar de que maneira pode não
ser óbvio à primeira vista, a
menos que você seja holandês.
 Agora é melhor do que nunca.
 Embora nunca é muitas vezes
melhor do que agora.
 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 grande
idéia - vamos fazer mais desses!
NameSpace: Um espaço imaginário onde os
nomes unicamente identificam as coisas.
 Construções
 Tipos de dado
 Palavras reservadas
 Operadores
 Interpretador interativo
 Análise léxica
 Compilador de bytecode
 Polimorfismo
 Orientação a objetos
 Programação funcional
 Tratamento de exceções
 Biblioteca padrão
 Comentários
 Construções de Python incluem: estrutura de
seleção (if, else, elif);
 Estrutura de repetição (for, while), que itera
por um container, capturando cada elemento
em uma variável local dada;
 Construção de classes (class);
 Construção de sub-rotinas (def);
 Construção de escopo (with), como por
exemplo para adquirir um recurso.
Tipo de dado Descrição Exemplo da sintaxe
str, unicode Uma cadeia de
caracteres imutável 'Wikipedia', u'Wikipedia'
list Lista heterogênea mutável [4.0, 'string',True]
tuple Tupla imutável (4.0, 'string',True)
set,frozenset Conjunto não ordenado, não
contém elementos duplicados
set([4.0, 'string',True])
frozenset([4.0, 'string',True])
dict conjunto associativo {'key1': 1.0, 'key2': False}
int
Número de precisão fixa, é
transparentemente convertido
para long caso não caiba em um
int.
42
2147483648L
float Ponto flutuante 3.1415927
complex Número complexo 3+2j
bool Booleano True ou False
 Python também permite a definição dos tipos
de dados próprios, através de classes.
 Instâncias são construídas invocando a classe
(FooClass()), e as classes são instância da
classe type, o que permite metaprogramação
(programação de programas-programa-
dados) e reflexão.
 O Python 2.5.2 define as seguinte 31 palavras
reservadas:
and del from not while
as elif global or with
assert else if pass yield
break except import print
class exec in raise
continue finally is return
def for lambda try
 Os operadores básicos de comparação
como ==, <, >=, entre outros são usados em
todos os tipos de dados, como números,
cadeias de texto, listas e mapeamentos.
 Comparações em cadeia como a < b <
c possuem o mesmo significado básico que
na matemática: os termos são comparadas
na ordem.
 Na versão 2.2.1 as constantes True e False
foram adicionadas (subclasses de 1 e 0
respectivamente).A comparação binária
retorna uma das duas constantes acima.
 Os operadores booleanos and e or também
seguem a avaliação mínima. Por exemplo, y
== 0 or x/y > 100 nunca lançará a exceção de
divisão por zero.
 O interpretador permite testar o código de um
programa e receber o resultado em tempo real:
 >>> 1+1
 2
 >>>
 >>> a = 1+1
 >>> print(a)
 2
 >>>
 A análise léxica é uma análise do
interpretador em si, os programas são lidos
por um analisador sintático que divide o
código em tokens.
 Todo programa é dividido em linhas lógicas
que são separadas pelo
token NEWLINE ou NOVA LINHA.
 As linhas físicas são trechos de código
divididos pelo caractere ENTER.
 Linhas lógicas não podem ultrapassar linhas
físicas com exceção de junção de linhas.
 MESES_DO_ANO = ['janeiro', 'fevereiro', 'março',
'abril', 'maio', 'junho',
'julho', 'agosto', 'setembro',
'outubro', 'novembro', 'dezembro']
 Abaixo um exemplo de permutação, retirado do
capítulo 2.1 sobre Estrutura de linhas na Análise
léxica do Manual de Referência da linguagem
(Language Reference Manual):
def perm(l): NOVA LINHA
INDENT if len(l) <= 1: NOVA LINHA
INDENT return[1] NOVA LINHA
DEDENT r = [ ] NOVA LINHA
for i in range(len(l)): NOVA LINHA
INDENT s = l[:i] + l[i+1:] NOVA LINHA
p = perm(s) NOVA LINHA
DEDENT for x in p: NOVA LINHA
INDENT r.append(l[i:i+1]+x) NOVA LINHA
DEDENT return r
 Diferente de linguagens com delimitadores
visuais de blocos, em Python a indentação é
obrigatória.
 O aumento da indentação indica o início de
um novo bloco, que termina da diminuição da
indentação.
Indentação correta Indentação incorreta
 Python pode compilar seus programas para
que a próxima vez que o executar não precise
compilar novamente o programa, reduzindo
o tempo de carga na execução.
 Utilizando o interpretador interativo não é
necessário a criação do arquivo de Python
compilado, os comandos são executados
interativamente.
 Quando um programa ou um módulo é
evocado, o interpretador realiza a análise
léxica e sintática, compila o código de alto
nível se necessário e o executa na máquina
virtual da linguagem.
 O bytecode é armazenado em arquivos com
extensão .pyc ou .pyo, este último no caso
de bytecode otimizado.
 Para descompilar um código de byte é
utilizado o módulo dis da biblioteca padrão
da linguagem.
 O polimorfismo é caracterizado quando duas ou
mais classes distintas tem métodos de mesmo
nome, de forma que uma função possa utilizar
um objeto de qualquer uma das classes
polimórficas, sem necessidade de tratar de
forma diferenciada conforme a classe do objeto.
 As chamadas de função em Python são
universais ou genéricas sem determinação de
tipo. Por isso, sobrecarga não é suportada na
linguagem.
 Python suporta a maioria das técnicas
da programação orientada a objeto.
 Qualquer objeto pode ser usado para
qualquer tipo, e o código funcionará
enquanto haja métodos e atributos
adequados.
 Em Python não existe proteção dos membros
duma classe ou instância pelo interpretador, o
chamado encapsulamento (separar o programa
em partes).
 Atributos com o nome começando com um _
são de uso privado da classe, mas não há um
policiamento do interpretador contra acesso a
estes atributos.
 Uma exceção são nomes começando com __.
class A:
a = 1 # atributo publico
_b = 2 # atributo de uso privado
__c = 3 # atributo de uso privado, tem o nome modificado
para _A__c
a = A()
print a.a # imprime 1
print a._b # válido, mas desencorajado
print a.__c # inválido, atributo inexistente
print a._A__c # válido, mas *fortemente* desencorajado
 Algumas linguagem orientadas a objeto:
 Uma das construções funcionais de Python
é compreensão de listas, uma forma de
construir listas.
 Em Python, funções são objetos de primeira
classe que podem ser criados e armazenados
dinamicamente.
 Python suporta e faz uso constante
de tratamento de exceções como uma forma
de testar condições de erro e outros eventos
inesperados no programa.
 É inclusive possível capturar uma exceção
causada por um erro de sintaxe.
 Exceções são usadas frequentemente como
uma estrutura de seleção, substituindo
blocos if-else.
Teste de atributo
if hasattr(spam, 'eggs'):
ham = spam.eggs
else:
handle_error()
Captura de exceção
try:
ham = spam.eggs
except AttributeError:
handle_error()
 Python possui uma grande biblioteca padrão,
geralmente citada como um dos maiores
triunfos da linguagem.
 Por conta da grande variedade de
ferramentas fornecida pela biblioteca padrão,
combinada com a habilidade de usar
linguagens de nível mais baixo como C e C++,
Python pode ser poderosa para conectar
componentes diversos de software.
 A biblioteca padrão conta com facilidades
para escrever aplicações para a Internet,
contando com diversos formatos e
protocolos como MIME e HTTP.
 Módulos para criar interfaces gráficas,
conectar em bancos de dados relacionais e
manipular expressões regulares.
 Existem dois tipos de documentação:
 O uso de comentários para indicar o que
certo código faz.
 O uso de cadeias de caractere, literais de
texto inseridos no código sem atribuição.
 Para comentar deve-se começar com # e os
comentários terminam pela quebra da linha.
 Não há suporte para comentários que se
estendem por mais de uma linha; cada linha
consecutiva de comentário deve indicar #.
 Cadeias de caracteres em Python são
delimitadas por " ou ' para única linha e
por """ ou ''' para múltiplas linhas.
 Diferente de comentários, a cadeias de
caracteres usadas como documentação são
objetos Python e fazem parte do código
interpretado.
 Há ferramentas que extraem automaticamente
essa documentação para a geração da
documentação de API* a partir do código.
 Documentação através de cadeias de caracteres
também pode ser acessada a partir do
interpretador através da função help().
*Interface de Programação de Aplicativos
Introdução a programação em python d2

Más contenido relacionado

La actualidad más candente

Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Fabio Spanhol
 
Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python Fabio Spanhol
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6Fabio Spanhol
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5Fabio Spanhol
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonGiancarlo Silva
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação PythonCarlos Schults
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Aprendizado Profundo & CNNs
Aprendizado Profundo & CNNsAprendizado Profundo & CNNs
Aprendizado Profundo & CNNsFabio Spanhol
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosFabio Spanhol
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 

La actualidad más candente (20)

Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Python Training #0.5 ed. 7
Python Training #0.5 ed. 7
 
Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Aprendizado Profundo & CNNs
Aprendizado Profundo & CNNsAprendizado Profundo & CNNs
Aprendizado Profundo & CNNs
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos Introdutórios
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 

Similar a Introdução a programação em python d2

Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdfSecont
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)Marcello Thiry
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 

Similar a Introdução a programação em python d2 (20)

Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdf
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
Python
PythonPython
Python
 
Pged 03
Pged 03Pged 03
Pged 03
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
Aula python
Aula pythonAula python
Aula python
 
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
 

Más de Moises de Paula

Introdução a programação em python d3 ides
Introdução a programação em python d3  idesIntrodução a programação em python d3  ides
Introdução a programação em python d3 idesMoises de Paula
 
Introdução a programação em python d5 anexo 3 (códigos)
Introdução a programação em python d5   anexo 3 (códigos)Introdução a programação em python d5   anexo 3 (códigos)
Introdução a programação em python d5 anexo 3 (códigos)Moises de Paula
 
Introdução a programação em python d4 anexo 2 (códigos)
Introdução a programação em python d4   anexo 2 (códigos)Introdução a programação em python d4   anexo 2 (códigos)
Introdução a programação em python d4 anexo 2 (códigos)Moises de Paula
 
Introdução a programação em python d3
Introdução a programação em python d3Introdução a programação em python d3
Introdução a programação em python d3Moises de Paula
 
Introdução a programação em python d3 anexo (códigos)
Introdução a programação em python d3   anexo (códigos)Introdução a programação em python d3   anexo (códigos)
Introdução a programação em python d3 anexo (códigos)Moises de Paula
 
Introdução a programação em python
Introdução a programação em pythonIntrodução a programação em python
Introdução a programação em pythonMoises de Paula
 

Más de Moises de Paula (6)

Introdução a programação em python d3 ides
Introdução a programação em python d3  idesIntrodução a programação em python d3  ides
Introdução a programação em python d3 ides
 
Introdução a programação em python d5 anexo 3 (códigos)
Introdução a programação em python d5   anexo 3 (códigos)Introdução a programação em python d5   anexo 3 (códigos)
Introdução a programação em python d5 anexo 3 (códigos)
 
Introdução a programação em python d4 anexo 2 (códigos)
Introdução a programação em python d4   anexo 2 (códigos)Introdução a programação em python d4   anexo 2 (códigos)
Introdução a programação em python d4 anexo 2 (códigos)
 
Introdução a programação em python d3
Introdução a programação em python d3Introdução a programação em python d3
Introdução a programação em python d3
 
Introdução a programação em python d3 anexo (códigos)
Introdução a programação em python d3   anexo (códigos)Introdução a programação em python d3   anexo (códigos)
Introdução a programação em python d3 anexo (códigos)
 
Introdução a programação em python
Introdução a programação em pythonIntrodução a programação em python
Introdução a programação em python
 

Introdução a programação em python d2

  • 1. Kaísy Nunes Alves Moisés Cardozo de Paula
  • 2.  Filosofia  The Zen of Python  Características  Construções  Tipos de dado  Palavras reservadas  Operadores  Interpretador interativo  Indentação  Compilador de bytecode  Polimorfismo  Orientação a objeto  Programação funcional  Tratamento de exceções  Biblioteca padrão  Comentários
  • 3.  Parte da cultura da linguagem gira ao redor de The Zen of Python, um poema que faz parte do documento "PEP 20 (The Zen of Python)", escrito pelo programador em Python de longa dataTim Peters, descrevendo sumariamente a filosofia do Python. Pode-se vê-lo através de um easter egg do Python pelo comando:  >>> import this
  • 4.  Um easter egg é qualquer coisa oculta, podendo ser encontrada em qualquer tipo de sistema virtual. Easter egg é um segredo virtual. O Livro de Mozilla, uma página secreta exclusiva dos navegadores Mozilla Firefox, Netscape e alguns outros antigos, é um exemplo de easter egg.
  • 5.  Beautiful is better than ugly.  Explicit is better than implicit.  Simple is better than complex.  Complex is better than complicated.  Flat is better than nested.  Sparse is better than dense.  Readability counts.  Special cases aren't special enough to break the rules.  Although practicality beats purity.  Errors should never pass silently.  Unless explicitly silenced.  In the face of ambiguity, refuse the temptation to guess.  Bonito é melhor que feio.  Explícito é melhor que implícito.  Simples é melhor que complexo.  Complexo é melhor que complicado.  Plano é melhor que aninhado.  Esparso é melhor que denso.  Legibilidade conta.  Casos especiais não são especiais o suficiente para quebrar as regras.  Embora praticidade vença a pureza.  Erros nunca devem passar em silêncio.  A menos que explicitamente silenciados.  Diante da ambiguidade, recuse a tentação de adivinhar.
  • 6.  There should be one-- and preferably only one --obvious way to do it.  Although that way may not be obvious at first unless you're Dutch.  Now is better than never.  Although never is often better than right now.  If the implementation is hard to explain, it's a bad idea.  If the implementation is easy to explain, it may be a good idea.  NameSpaces are one honking great idea -- let's do more of those!  Deve haver um - e preferencialmente só um - modo óbvio para fazer isso.  Apesar de que maneira pode não ser óbvio à primeira vista, a menos que você seja holandês.  Agora é melhor do que nunca.  Embora nunca é muitas vezes melhor do que agora.  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 grande idéia - vamos fazer mais desses! NameSpace: Um espaço imaginário onde os nomes unicamente identificam as coisas.
  • 7.  Construções  Tipos de dado  Palavras reservadas  Operadores  Interpretador interativo  Análise léxica  Compilador de bytecode  Polimorfismo  Orientação a objetos  Programação funcional  Tratamento de exceções  Biblioteca padrão  Comentários
  • 8.  Construções de Python incluem: estrutura de seleção (if, else, elif);  Estrutura de repetição (for, while), que itera por um container, capturando cada elemento em uma variável local dada;  Construção de classes (class);  Construção de sub-rotinas (def);  Construção de escopo (with), como por exemplo para adquirir um recurso.
  • 9. Tipo de dado Descrição Exemplo da sintaxe str, unicode Uma cadeia de caracteres imutável 'Wikipedia', u'Wikipedia' list Lista heterogênea mutável [4.0, 'string',True] tuple Tupla imutável (4.0, 'string',True) set,frozenset Conjunto não ordenado, não contém elementos duplicados set([4.0, 'string',True]) frozenset([4.0, 'string',True]) dict conjunto associativo {'key1': 1.0, 'key2': False} int Número de precisão fixa, é transparentemente convertido para long caso não caiba em um int. 42 2147483648L float Ponto flutuante 3.1415927 complex Número complexo 3+2j bool Booleano True ou False
  • 10.  Python também permite a definição dos tipos de dados próprios, através de classes.  Instâncias são construídas invocando a classe (FooClass()), e as classes são instância da classe type, o que permite metaprogramação (programação de programas-programa- dados) e reflexão.
  • 11.  O Python 2.5.2 define as seguinte 31 palavras reservadas: and del from not while as elif global or with assert else if pass yield break except import print class exec in raise continue finally is return def for lambda try
  • 12.  Os operadores básicos de comparação como ==, <, >=, entre outros são usados em todos os tipos de dados, como números, cadeias de texto, listas e mapeamentos.  Comparações em cadeia como a < b < c possuem o mesmo significado básico que na matemática: os termos são comparadas na ordem.
  • 13.  Na versão 2.2.1 as constantes True e False foram adicionadas (subclasses de 1 e 0 respectivamente).A comparação binária retorna uma das duas constantes acima.  Os operadores booleanos and e or também seguem a avaliação mínima. Por exemplo, y == 0 or x/y > 100 nunca lançará a exceção de divisão por zero.
  • 14.  O interpretador permite testar o código de um programa e receber o resultado em tempo real:  >>> 1+1  2  >>>  >>> a = 1+1  >>> print(a)  2  >>>
  • 15.  A análise léxica é uma análise do interpretador em si, os programas são lidos por um analisador sintático que divide o código em tokens.  Todo programa é dividido em linhas lógicas que são separadas pelo token NEWLINE ou NOVA LINHA.
  • 16.  As linhas físicas são trechos de código divididos pelo caractere ENTER.  Linhas lógicas não podem ultrapassar linhas físicas com exceção de junção de linhas.  MESES_DO_ANO = ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro']
  • 17.  Abaixo um exemplo de permutação, retirado do capítulo 2.1 sobre Estrutura de linhas na Análise léxica do Manual de Referência da linguagem (Language Reference Manual): def perm(l): NOVA LINHA INDENT if len(l) <= 1: NOVA LINHA INDENT return[1] NOVA LINHA DEDENT r = [ ] NOVA LINHA for i in range(len(l)): NOVA LINHA INDENT s = l[:i] + l[i+1:] NOVA LINHA p = perm(s) NOVA LINHA DEDENT for x in p: NOVA LINHA INDENT r.append(l[i:i+1]+x) NOVA LINHA DEDENT return r
  • 18.  Diferente de linguagens com delimitadores visuais de blocos, em Python a indentação é obrigatória.  O aumento da indentação indica o início de um novo bloco, que termina da diminuição da indentação.
  • 20.  Python pode compilar seus programas para que a próxima vez que o executar não precise compilar novamente o programa, reduzindo o tempo de carga na execução.  Utilizando o interpretador interativo não é necessário a criação do arquivo de Python compilado, os comandos são executados interativamente.
  • 21.  Quando um programa ou um módulo é evocado, o interpretador realiza a análise léxica e sintática, compila o código de alto nível se necessário e o executa na máquina virtual da linguagem.  O bytecode é armazenado em arquivos com extensão .pyc ou .pyo, este último no caso de bytecode otimizado.
  • 22.  Para descompilar um código de byte é utilizado o módulo dis da biblioteca padrão da linguagem.
  • 23.  O polimorfismo é caracterizado quando duas ou mais classes distintas tem métodos de mesmo nome, de forma que uma função possa utilizar um objeto de qualquer uma das classes polimórficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto.  As chamadas de função em Python são universais ou genéricas sem determinação de tipo. Por isso, sobrecarga não é suportada na linguagem.
  • 24.  Python suporta a maioria das técnicas da programação orientada a objeto.  Qualquer objeto pode ser usado para qualquer tipo, e o código funcionará enquanto haja métodos e atributos adequados.
  • 25.  Em Python não existe proteção dos membros duma classe ou instância pelo interpretador, o chamado encapsulamento (separar o programa em partes).  Atributos com o nome começando com um _ são de uso privado da classe, mas não há um policiamento do interpretador contra acesso a estes atributos.  Uma exceção são nomes começando com __.
  • 26. class A: a = 1 # atributo publico _b = 2 # atributo de uso privado __c = 3 # atributo de uso privado, tem o nome modificado para _A__c a = A() print a.a # imprime 1 print a._b # válido, mas desencorajado print a.__c # inválido, atributo inexistente print a._A__c # válido, mas *fortemente* desencorajado
  • 27.  Algumas linguagem orientadas a objeto:
  • 28.  Uma das construções funcionais de Python é compreensão de listas, uma forma de construir listas.  Em Python, funções são objetos de primeira classe que podem ser criados e armazenados dinamicamente.
  • 29.  Python suporta e faz uso constante de tratamento de exceções como uma forma de testar condições de erro e outros eventos inesperados no programa.  É inclusive possível capturar uma exceção causada por um erro de sintaxe.
  • 30.  Exceções são usadas frequentemente como uma estrutura de seleção, substituindo blocos if-else. Teste de atributo if hasattr(spam, 'eggs'): ham = spam.eggs else: handle_error() Captura de exceção try: ham = spam.eggs except AttributeError: handle_error()
  • 31.  Python possui uma grande biblioteca padrão, geralmente citada como um dos maiores triunfos da linguagem.  Por conta da grande variedade de ferramentas fornecida pela biblioteca padrão, combinada com a habilidade de usar linguagens de nível mais baixo como C e C++, Python pode ser poderosa para conectar componentes diversos de software.
  • 32.  A biblioteca padrão conta com facilidades para escrever aplicações para a Internet, contando com diversos formatos e protocolos como MIME e HTTP.  Módulos para criar interfaces gráficas, conectar em bancos de dados relacionais e manipular expressões regulares.
  • 33.  Existem dois tipos de documentação:  O uso de comentários para indicar o que certo código faz.  O uso de cadeias de caractere, literais de texto inseridos no código sem atribuição.
  • 34.  Para comentar deve-se começar com # e os comentários terminam pela quebra da linha.  Não há suporte para comentários que se estendem por mais de uma linha; cada linha consecutiva de comentário deve indicar #.
  • 35.  Cadeias de caracteres em Python são delimitadas por " ou ' para única linha e por """ ou ''' para múltiplas linhas.  Diferente de comentários, a cadeias de caracteres usadas como documentação são objetos Python e fazem parte do código interpretado.
  • 36.  Há ferramentas que extraem automaticamente essa documentação para a geração da documentação de API* a partir do código.  Documentação através de cadeias de caracteres também pode ser acessada a partir do interpretador através da função help(). *Interface de Programação de Aplicativos