SlideShare uma empresa Scribd logo
1 de 129
Aprendendo a programar com Python
Jardel Weyrich
jardel@teltecsolutions.com.br
 Entender a composição de um programa;
 Entender o fluxo de execução de um programa;
 Aprender os conceitos básicos da programação;
 Compreender as vantagens de cada tipo de variável
(especificamente no Python);
 Identificar necessidades de repetição;
 Exercitar a lógica;
Objetivos
O que é uma linguagem?
Padronização da
comunicação.
A linguagem escrita
é formada por
símbolos/caracteres
e possui regras.
História do Python
- Monty Python! Grupo de humoristas ingleses;
- Criada por Guido van Rossum em 1989;
- Publicada em 1991 - versão 0.9.0;
- Criada para substituir a linguagem ABC, usada no Amoeba
OS (SO distribuído criado por Andrew Tanenbaum);
- Baseada na linguagem ABC, com parte da sintaxe derivada
do C, Haskell, Icon, Modula-3, e Perl;
- Linguagem de propósito geral de alto nível (OO,
imperativo, funcional, prodedural);
- Uma das linguagens mais utilizadas no mundo;
Por que usar uma linguagem de programação?
Para dizer ao computador ou dispositivo como executar
uma tarefa.
Como fazemos isto?
Através de um programa/software que contém dados e
instruções.
Como o computador entende a linguagem?
$ python programa.py
Executa o interpretador Python que lê todas
instruções do arquivo (script) passado por parâmetro,
compila e gera um arquivo .pyc ou .pyo (otimizado), e
executa o programa.
O programa é executado em ordem (fluxo de execução),
de cima para baixo, linha a linha, instrução por
instrução.
Acesso ao laboratório
Alunos de 1 a 20:
ssh alunoX@192.168.254.53 Senha: python
Primeiro acesso : screen –S alunoX
Próximos acessos: screen -x
Executando o interpretador interativo do Python 3:
python3
Descobrindo a versão do Python:
import sys; print(sys.version)
Python – Hashbang (shebang)
#!/usr/bin/env python3
print('Olá mundo!')
O hashbang é respeitado somente se o programa for
executado sem informar o interpretador explicitamente.
Por exemplo:
./script.py # Ao invés de: python script.py
Python – Encoding dos arquivos
No Python 3 o encoding padrão é UTF-8. No Python 2, era
necessário adicionar uma linha chamada magic comment
informando o encoding. O interpretador identifica ela nas
2 primeiras linhas do arquivo. Por exemplo:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print('Olá mundo!')
Python – Comentários
#!/usr/bin/env python3
# Comentário
print('Olá mundo!')
""" Outro
comentário
""”
''' Mais um comentário '''
Python – Variáveis
Reserva um espaço na memória para armazenar um
dado/valor de um determinado tipo, e o associa a um
nome.
var1 = 5
var2 = 10
var3 = var1 * var2
Python – Variáveis
Restrições de nomenclatura
- Somente letras, números, underscore;
- Não pode iniciar com número;
- Não pode ser uma palavra reservada:
and, as, assert, break, class, continue, def, del,
elif, else, except, exec, finally, for, from,
global, if, import, in, is, lambda, not, or, pass,
print, raise, return, try, while, with, yield
Python – Variáveis
Alguns tipos importantes
str (-ing) 'Texto entre aspas', 'palavra'
bool (-ean) True ou False
int (-eger) 1, 2, 10, 5000
float 3.1415, 9.8, 1.61803398875
list [ 'palavra', True, 1, 3.1415 ]
dict { 'prop':'nome', 'tem':True }
tuple ( 'palavra', True, 1, 3.1415 )
type Tipo dos tipos :-)
Python – Variáveis
Tipagem dinâmica: O último valor atribuído à variável
indicará o tipo dela.
var1 = "valor" # atribuição de string
var2 = 'valor' # atribuição de string
var1 = 5 # atribuição de inteiro
var2 = 3.1337 # atribuição de float
a, b, c = 1, 2, 'teste' # múltiplas atribuições
Python – Variáveis
str – Tipo composto por um conjunto imutável de caracteres,
texto.
fruta = "banana"
marca = """Tesla"""
str1 = 'abc'
str2 = '''teste'''
len(fruta) # retorna o comprimento, 6
fruta[0] # retorna 'b'
fruta[2:5] # retorna 'nan'
fruta.upper() # retorna 'BANANA'
Python – Variáveis
bool – Verdadeiro ou falso.
var1 = True # verdadeiro
var2 = False # falso
George Boole?
Matemático Inglês autodidata que definiu o primeiro
sistema de lógica algébrica na metade do século XIX,
nomeado álgebra booliana, ou de Boole.
Python – Variáveis
int – Números inteiros - sem limite de bits!
var1 = 1991
var2 = 2016
NOTA: int e long eram diferentes antes do Python 3 –
a PEP 237 unificou.
* PEP: Python Enhancement Proposal
Python – Variáveis
float – Números decimais (double).
var1 = 1.2345
var2 = 3.141592
Python – Variáveis
constantes – ”Variáveis” não mutáveis.
Não são formalmente definidas pela linguagem, mas a
convenção é nomear variáveis utilizando apenas letras
maiúsculas.
PI = 3.141592
MAX_LENGTH = 255
OBS: Podemos contornar utilizando class properties.
Python – Variáveis – Objetos e valores
No exemplo abaixo, a e b apontam para a mesma string?
a = 'banana'
b = 'banana'
No primeiro caso, a e b se referem a duas coisas
diferentes com o mesmo valor.
No segundo caso, elas se referem à mesma coisa.
Python – Variáveis – Objetos e valores
Todo objeto possui um identificador único que pode
ser obtido com a função id().
Se 2 objetos possuem o mesmo identificador, significa
que apontam para (referenciam) o mesmo valor.
>>> id(a)
135044008
>>> id(b)
135044008
Python – Variáveis – Objetos e valores
Listas se comportam diferente:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> id(a)
135045528
>>> id(b)
135041704
Python – Variáveis – Objetos e valores
Referências, apelidos (aliases)
>>> a = [1, 2, 3]
>>> b = a
Python – Escopo
Global
Variáveis criadas fora do escopo de qualquer
função/classe são criadas no escopo global.
O valor das variáveis globais é "esquecido" quando
o programa termina.
Python – Escopo
Local
Variáveis criadas dentro do escopo de funções ou
classes tem escopo local.
O valor das variáveis locais é "esquecido”
automaticamente quando a função termina, ou quando o
interpretador identifica que o objeto em questão não
está mais sendo utilizado - neste caso, pode ser
forçado via gc.collect().
Python – Indentação
Recuo do texto em relação a margem.
No caso específico do Python, é determinante para a
definição do escopo de um bloco de código.
Python – Indentação
def teste():
'''retorna um número'''
my_int = 12
return my_int
print(teste())
Causa o seguinte erro:
IndentationError: expected an indented block
Python – Indentação
def teste():
'''retorna um número'''
my_int = 12
return my_int
print(teste())
Funciona!
Python – Indentação – Tabs vs Espaços
Fonte: XKCD
Python – Operações
Arity - Número de operandos ou argumentos que uma
função recebe.
- Nullary
- Unary
- Binary
- Ternary
- N-ary
Python – Operações - Unária
Operação com apenas um operando.
Prefix notation
operador operando
Postfix notation
operando operador
Python – Operações - Binária
Operação com dois operandos.
Infix notation: 5 – 3 * 4
operando operador operando
Outras notações:
- Polish notation (PN): * - 5 3 4
- Reverse Polish notation (RPN): 5 3 4 * -
Python – Operadores
Operadores são utilizados em expressões. Os tipos são:
- Aritméticos
- Atribuição
- Lógicos
- Bitwise
- Comparação
- Membership (filiação?)
- Identity (identidade)
Python – Operadores – Aritméticos
Soma : a + b, a + 2, 100 + 20
Subtração : a – b, a - 2, 100 - 20
Multiplicação : a * b, a * 2, 100 * 20
Divisão : a / b, a / 2, 100 / 20
Módulo* : a % b, a % 2, 100 % 2
Divisão floor*: a // b, a // 2, 100 // 2
Exponenciação : a ** b, a ** 2, 100 ** 3
* Módulo é o resto da divisão. Exemplo: 3 % 2 == 1.
* Divisão floor é o quociente inteiro da divisão, sem
decimais. Exemplo: 9 // 2 == 4
Python – Operadores – Aritméticos
Os operadores de soma (+) e ”módulo” (%) podem ser utilizados
com strings também. O operador de módulo para strings tem outro
nome, operador de formatação de string.
var1 = 'abc' + 'def' # soma de 2 strings literais
var2 = var1 + var1 # soma de 2 variáveis do tipo str
var3 = 'Teste ' + var1 # soma de 1 variável do tipo str e
uma string literal.
var3 = 'Teste %d' % 123 # formata a string.
Como o tipo str é imutável, uma nova str é criada em cada
operação.
Python – Operadores – Atribuição
Como armazenar um valor em uma variável?
a = b
Atribui o valor do operando da direita ao operando da
esquerda.
O operador de atribuição requer que o operando da
esquerda seja uma variável.
Python – Operadores – Atribuição
No Python, especificamente, é possível realizar
múltiplas atribuições utilizando um único operador de
atribuição:
a, b = x, y
(a, b) = x, y
a, b, c = x, y, z
a, (b, c) = [x, [y, z]]
Python – Operadores – Atribuição
Existem outros operadores de atribuição:
a = a + b a = a / b a = a // b
a += b a /= b a //= b
a = a – b a = a % b
a -= b a %= b
a = a * b a = a ** b
a *= b a **= b
Python – Operadores – Lógicos
Lembram do tipo bool? True e False?
- Tabela verdade (1922);
- Mapa de Karnaugh (1952), utilizado para simplificar
uma equaçao lógica;
- Diagrama de Venn (século XIX), utilizado para
simbolizar graficamente propriedades, axiomas, e
problemas relativos aos conjuntos;
Python – Operadores – Lógicos
and a and b
or a or b
not not a
Python – Operadores – Lógicos
Tabela verdade
Conjunção
A B A and B
V V V
V F F
F V F
F F F
Disjunção
A B A or B
V V V
V F V
F V V
F F F
Disjunção exclusiva
A B A xor B
V V F
V F V
F V V
F F F
Negação da
disjunção
A B A nor B
V V F
V F F
F V F
F F V
Negação
A not A A
V F
F V
Python – Operadores – Bitwise
& binary and
| binary or
^ binary xor
~ binary not
>> binary right shift
<< binary left shift
DICA: bin(numero) = representação binária
Python – Operadores – Comparação
< menor que
> maior que
<= menor ou igual a
>= maior ou igual a
== igual a
!= diferente de
Python – Operadores – Membership?
in True se o valor está presente numa
sequência, False caso contrário (x in y)
not in False se o valor está presente numa
sequência, True caso contrário
(x not in y)
Python – Operadores - Identity
is True se os operandos referenciam o mesmo
objeto, False caso contrário
(x is y, id(x) equals id(y))
is not False se os operandos referenciam o mesmo
objeto, True caso contrário
(x is not y, id(x) not equal id(y))
Python – Precedência dos operadores
Ordem na qual os operadores são aplicados aos
operandos, a fim de evitar ambiguidades.
Python – Precedência dos operadores
** Exponentiation
~ + - Complement, unary plus and minus
* / % // Multiply, divide, modulo, floor div
+ - Addition and subtraction
>> << Bitwise right shift, and left shift
& Bitwise AND
^ | Bitwise XOR and OR
<= < > >= Comparison
<> == != Equality
= %= /= //= -= += *= **= Assignment
is is not Identify
in not in Membership
not or and Logical
Python – Precedência dos operadores
Expressão 1: 4 - 3 * 2
4 – (3 * 2)
-2
Expressão 2: (4 – 3) * 2
(1) * 2
2
Expressão 3: (4 – 3) * 2
(1) * 2
2
Python – Conversões
str(10) integer -> string
str(10.1) float -> string
str({'v':True}) object -> string
int('10') string -> integer
float('10.1') string -> float
int(10.1) float -> int
float(10) int -> float
Python – Formatadores de string
nome = input('Qual é o seu nome?n')
idade = int(input('Qual é o sua idade?n'))
print('Olá %s!' % nome)
print('%s, %d anos' % (nome, idade))
print('{0}, {1} anos'.format(nome, idade))
print('{}, {} anos'.format(nome, idade))
frase = '{a}, {b} anos'.format(a=nome, b=idade)
print(frase)
Python – Listas
Conjunto mutável de valores (elementos) de qualquer
tipo, com índices de 0 a N.
Python – Listas
# Criando
# vazia
lista = []
lista = list()
# contendo números de 0 a 29
lista = list(range(30))
# contendo números de 5 a 29
lista = list(range(5, 30))
# contendo números múltiplos de 5 entre 0 e 29
lista = list(range(0, 30, 5))
Python – Listas
# Imprimindo
print(lista)
# Clonando
lista2 = lista[:]
Python – Listas
# Adicionando itens
lista.append(31)
# Removendo itens
lista.remove(5)
lista.pop(i)
del lista[0]
del lista[2:4]
Python – Listas
# Acessando itens
lista[0], lista[1], etc.
lista[4-2] # Qual índice será acessado?
lista[-1] # Qual índice será acessado?
lista[-2] # Qual índice será acessado?
# Alterando itens
lista[0] = 1000
Python – Listas
# Tamanho, comprimento
len(lista) # retorna o # de itens na lista
# Ordenando
sorted(lista) # retorna uma nova lista ordenada
lista.sort() # muda a própria lista
Python – Listas
# Testando existência do item
10 in lista # retorna True ou False
# Repartindo
lista[start:end] # items de start até end-1
lista[start:] # items de start até o fim
lista[:end] # items do início até end-1
lista[:] # uma cópia da lista inteira
Python – Matrizes
Representadas por listas aninhadas (lista de listas, ou array de
arrays).
m3x2 = [[1, 7, 9],[8, 4, 2]]
m3x2[0] == [1, 7, 9]
m3x2[1] == [8, 4, 2]
m3x2[0][0] == 1
m3x2[1][1] == 4
m3x3 = [
[1,0,0],
[0,1,0],
[0,0,1]
]
Python – Dicionários
Tipo composto que utiliza qualquer tipo como índice.
Python – Dicionários
# Criando
# vazio
d = dict()
d = {}
# contendo propriedades
d = {'name': 'value'}
d = {'x': 1, 'y': 2}
# usando uma lista de tuples
d = dict([('x', 1), ('y', 2)])
Python – Dicionários
# Imprimindo
print(d)
# Clonando
d2 = d.copy() # shallow copy
d3 = copy.deepcopy(d)
Python – Dicionários
# Adicionando propriedades
d['nome'] = 'Bruce Lee'
d['ano'] = 1940
# Removendo propriedades
del d['nome']
Python – Dicionários
Outras operações:
len(d) # Retorna tamanho, compimento
d.keys() # Retorna chaves (nome das propriedades)
d.values() # Retorna valores (das propriedades)
d.items() # Retorna lista de tuplas de chave-valor
'nome' in d # A propriedade existe? True ou False
Python – Tuplas
Lista de valores separados por vírgula, similar a
lista, porém imutável.
Python – Tuplas
# Criando
t = 'a', 'b', 'c', 'd', 'e'
t = ('a', 'b', 'c', 'd', 'e')
t = ('a',) # Note a vírgula no final
Sem a vírgula, o interpretador entenderá que é apenas
uma string entre parênteses.
Python – Tuplas
# Imprimindo
print(t)
# Tamanho, comprimento
len(t) # retorna o # de itens na tupla
Python – Tuplas
# Alterando elementos
t[0] = 'x'
>>> TypeError: 'tuple' object does not support item
assignment
# Removendo elementos
del t[0]
>>> TypeError: 'tuple' object does not support item
deletion
Python – Tuplas
# Testando existência do item
'a' in t # retorna True ou False
# Repartindo
t[start:end] # items de start até end-1
t[start:] # items de start até o fim
t[:end] # items do início até end-1
t[:] # uma cópia da lista inteira
Python – Tuplas
# Trocando valores (sem tupla)
temp = a
a = b
b = temp
# Trocando valores usando atribuição de tupla
a, b = b, a
Python – Condições e condicionais
Condições podem ser verdadeiras ou falsas. Por
exemplo:
A expressão x > 10 é verdadeira se o valor da
variável x for maior que 10, caso contrário a
expressão é falsa.
Python – Condições e condicionais
Condicionais dependem de condições, portanto elas
permitem que você faça uma coisa ou outra, dependendo
do resultado da condição. A condicional mais comum é
a palavra-chave if. Por exemplo:
if x > 10:
print('maior que 10')
Python – Condições e condicionais
As vezes você quer fazer uma coisa quando a condição
é verdadeira, e outra coisa quando ela é falsa. A
palavra-chave else permite que você faça isto.
Exemplo:
if x > 10:
print('maior que 10')
else:
print('menor que 10')
Python – Condições e condicionais
Condicionais aninhados:
if x == y:
print(x, 'e', y, 'são iguais')
else:
if x < y:
print(x, 'é menor que', y)
else:
print(x, 'é maior que', y)
Python – Condições e condicionais
Também é possível testar várias condições, e fazer uma
coisa somente para a primeira condição que for verdadeira.
Para isto usamos a palavra-chave elif (abrev de else if).
Exemplo:
if x == y:
print(x, 'e', y, 'são iguais')
elif x < y:
print(x, 'é menor que', y)
else:
print(x, 'é maior que', y)
Python – Condições e condicionais
Operador ternário (desde Python 2.5)
a if cond else b
Testa a condição cond, e retorna a ou b, dependendo
do resultado da condição.
resultado = 'maior' if x > 10 else 'menor'
print('x é %s que 10' % resultado)
Python – Condições e condicionais
import time
agora = time.localtime()
hora = agora.tm_hour
if hora < 7: print('dormindo')
elif hora < 8: print('indo trabalhar')
elif hora < 13 and hora > 12: print('almoçando')
elif hora < 18: print('trabalhando')
elif hora < 19: print('voltando pra casa')
elif hora < 20: print('jantando')
elif hora < 22: print('descansando')
else: print('dormindo')
Python – Loops (laços)
É comum a necessidade de repetir uma ou mais
instruções um determinado número de vezes. Para isto,
podemos usar a palavra-chave while. Exemplo:
lista = [0,10,20,30,40,50]
indice = 0
while indice < len(lista):
print('num = %d' % lista[indice])
indice += 1
Python – Loops (laços)
Utilizar um índice para percorrer um conjunto de valores
é tão comum que o Python oferece uma alternativa
simplificada, as palavras-chave for-in. Exemplo:
lista = [0,10,20,30,40,50]
for num in lista:
print('num = %d' % num)
for i, num in enumerate(lista):
print(’lista[%d] = %d' % (i, num))
Python – Loops (laços)
Outro exemplo:
prefixos = 'JKLMNOPQ'
sufixo = 'ython'
for letra in prefixos:
print(letra + sufixo)
Python – Funções
Função é uma sequência nomeada de instruções ou comandos
que realizam uma operação desejada.
- Deve ser definida/declarada ANTES de ser utilizada,
chamada, invocada;
- Pode ser chamada repetidamente;
- Pode chamar outra função (composição), inclusive a si
mesma (recursividade);
- Pode receber argumentos (parâmetros) ou não;
- Pode retornar um resultado ou não;
Python – Funções
- A definição de uma função não altera o fluxo de execução do
programa;
- Os comandos dentro da função não são executados até a
função ser chamada;
- Chamadas de função são como um desvio no fluxo de execução.
Em vez de ir para o próximo comando, o fluxo salta para a
primeira linha da função chamada, executa todos os comandos
lá e então volta atrás para retomar de onde havia deixado.
Python – Funções
Como declarar uma função?
def NOME():
COMANDOS # corpo da função, function’s body
def NOME():
pass # função vazia, sem implementação
Python – Funções
def OlaMundo():
texto = 'Olá mundo!'
print(texto)
def OlaNovamente():
texto = 'Olá novamente!'
print(texto)
Python – Funções
Como chamar (invocar, executar) uma função?
OlaMundo()
OlaNovamente()
Python – Funções – Pergunta (global1.py)
No programa abaixo, qual valor será mostrado na tela?
texto = 'INICIAL'
def funcao():
texto = 'MUDOU’
funcao()
print(texto)
Python – Funções – Pergunta (global1.py)
A resposta é INICIAL.
Mesmo utilizando a mesma nomenclatura, neste caso a
atribuição cria uma variável no escopo local.
De outra forma teríamos problemas inesperados
causados por funções alterando valores de variáveis
globais.
Python – global (global2.py)
Para alterarmos variáveis globais, utilizamos a palavra-
chave global. É necessário utilizar global somente se
houver atribuição. Exemplo:
texto = 'INICIAL'
def funcao():
# Referencia global – não será criada localmente
global texto
texto = 'MUDOU’
funcao()
print(texto) # Imprime MUDOU
Python – Funções – Pergunta (escopo1.py)
O programa abaixo funciona e mostra 'INICIAL' na
tela?
def funcao():
print(val)
val = 'INICIAL'
funcao()
Python – Funções – Pergunta (escopo1.py)
A resposta é SIM.
A função é chamada somente APÓS a inicialização da
variável, portanto o valor dela será mostrado
corretamente.
Python – Funções – Pergunta (escopo2.py)
Se a função fosse chamada antes da inicialização da
variável, receberíamos um erro NameError, pois a
variável não existe em nenhum escopo acessível.
Exemplo:
def funcao():
print(val)
funcao()
val = 'INICIAL'
Python – Funções – Pergunta (escopo3.py)
E neste caso, o que é mostrado na tela?
def funcao():
print(texto)
texto = 'Eu amo São Paulo!'
print(texto)
texto = 'Eu amo Floripa!'
funcao()
Python – Funções – Pergunta (escopo3.py)
Um erro!
UnboundLocalError: local variable 'texto' referenced
before assignment
Um valor é atribuído à variável texto dentro da função,
(sem a palavra-chave global), portanto ela é criada no
escopo local. O erro ocorre pois tentamos imprimir seu
valor antes de atribuí-lo.
Python – Funções - Argumentos
Argumentos são valores passados para a função, e
podem influenciar no fluxo de execução, ou
comportamento, da função.
Argumentos tem escopo LOCAL.
Python – Funções - Argumentos
Como declarar uma função com argumentos?
def NOME(ARGUMENTOS):
pass
def NOME(arg1, arg2, arg3):
pass
Python – Funções - Argumentos
def nome1(arg1):
print('Olá', arg1)
def nome2(arg1, arg2):
print('Olá', arg1, arg2)
nome1('Teltec')
nome2('Teltec', 'Solutions')
nome1('Teltec', 'Solutions') # TypeError: nome1() takes
1 positional argument but 2 were given
Python – Funções - Retorno
O resultado de uma função é chamado de valor de
retorno.
A palavra chave return permite que uma função retorne
valores, e também permite terminar a execução de uma
função antes de ela alcançar seu fim. Um uso comum
para isto é ao detectar uma condição de erro.
Python – Funções - Retorno
Exemplo de retorno precoce (antecipado):
def calculaPotencia(num, pot):
if num <= 0 or pot <= 0:
print('Somente números positivos')
return
return num ** pot
Python – Funções - Retorno
def nada():
return # ou return None
def potencia(valor, potencia):
return valor ** potencia
def fatorial(num):
import math
return math.factorial(num)
def tupla():
return True, 'Teste'
Python – Funções - Exemplos
Exemplo 1:
>>> import functools
>>> def add(x, y): return x + y
...
>>> functools.reduce(add, range(1, 11), 0)
55
>>> help(functools.reduce)
Python – Funções - Exemplos
Exemplo 1 simplificado:
>>> import functools
>>> functools.reduce(lambda x,y: x+y, range(1, 11))
55
Python – Funções – Exemplos
Exemplo 1 simplificado de outra forma:
>>> import functools
>>> import operator
>>> functools.reduce(operator.add, range(1, 11))
55
Python – Funções - Exemplos
Exemplo 2:
>>> import functools
>>> import operator
>>> def sum(seq):
... return functools.reduce(operator.add, seq, 0)
...
>>> sum(range(1, 11))
55
>>> sum([])
0
Python – Funções - Exemplos
Exemplo 3:
>>> squares = []
>>> for x in range(10):
... squares.append(x ** 2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Python – Funções - Exemplos
Exemplo 3 simplificado:
>>> squares = [x ** 2 for x in range(10)]
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Python – Módulos
Módulo é um arquivo .py contendo código Python. Ele serve
principalmente para:
- Dividir código extenso;
- Facilitar a manutenção do código;
- Facilitar a reutilização de código entre diferentes
partes do programa;
Para que o módulo A tenha visibilidade sobre as definições
e declarações contidas no módulo B, precisamos importar o
módulo B no módulo A.
Python – Módulos
Para fazermos isto utilizamos a palavra-chave import, ou from-
import. O nome do módulo é o nome do arquivo sem a extensão .py.
Exemplos:
import modulo # Importa o módulo
# Importa todas definições/declarações contidas no módulo
from modulo import * # Evite, pois POLUI o namespace!
# Importa só a definição contida no módulo
from modulo import definicao
# Importa o módulo do diretório do script atual
from . import modulo
# Importa o módulo do diretório pai do script atual
from .. import modulo
Python – Module Search Path (sys.path)
Quando um módulo (teste1) é importado, o interpretador primeiro
procura por um módulo built-in com este nome. Se ele não
encontrar, então ele procura por um arquivo com este nome
(teste1.py) em uma lista de diretórios presentes na variável
sys.path. Ela é inicializada em ordem por:
- Diretório contendo o script sendo executado, ou o diretório
atual (caso não esteja executando um script);
- Variável de ambiente chamada PYTHONPATH;
- Diretórios padrões da instalação do interpretador;
import sys; print('n'.join(sys.path))
Python – Pacotes
Pacotes são uma forma de estruturar os módulos e organizá-los em
namespaces. Exemplo:
import pacote # Importa o pacote inteiro
import pacote.modulo # Importa o módulo
from pacote import modulo # Importa o módulo
# Importa todas definições/declarações contidas no módulo
from pacote.modulo import * # Evite, pois POLUI o namespace!
# Importa só a definição contida no módulo
from pacote.modulo import definicao
Python – Pacotes
O nome de módulo A.B indica um sub-módulo com nome B contido
dentro do pacote com nome A. Exemplo:
src/
|-- main.py # Módulo main
|-- A/ # Pacote A
|-- __init__.py # Veremos a seguir
|-- B.py # Sub-módulo B
import A.B # Importando B.py a partir de main.py
Python – Pacotes
O que é preciso para criar um pacote?
- Criar um diretório;
- Criar um arquivo __init__.py dentro deste diretório;
A existência desse arquivo é exigida para fazer o Python
tratar o diretório como um pacote.
Se houver código nele, será executado quando o pacote ou
qualquer um dos módulos do pacote for importado.
Python – The Python Standard Library
 O Python vem com uma biblioteca padrão de tipos, constantes,
exceções, e módulos. Alguns destes são built-in, ou seja,
estão dentro do interpretador.
 O conjunto de módulos padrão varia de acordo com a
plataforma. Por exemplo, o módulo winreg só existe em
sistemas Windows.
 Podemos ver todos built-ins assim:
import builtins; dir(builtins)
Python – The Python Standard Library
 Podemos consultar a documentação de qualquer tipo/função/etc
diretamente a partir do interpretador:
help(nome)
 Podemos consultar a documentação de toda biblioteca em:
https://docs.python.org/3/library/
Dicas
- Syntax-highlight: Ajuda!
- Code-completion : Ajuda! Mas se você está estudando a
linguagem, pode te atrapalhar.
- IDE : Ajuda quem gosta, atrapalha quem não gosta.
- Versionamento: Se você ainda não conhece, fale comigo.
- Indentação : Use apenas tabs ou apenas espaços – Não
misture-os! E não converta a indentação
manualmente - Use um editor que faça isto.
- Nomenclaturas: Utilize nomes que descrevam a propósito.
Dicas
Entender mensagens de erro é fundamental!
Dicas
Nada substitui a prática e a experiência.
Próximo(s) treinamento(s)?
1. Git – Como versionar meus projetos?
2. Python intermediário: Programação orientada a
objetos
3. Desmistificando os Certificados Digitais
Preparação do ambiente - Interpretador
- Python 3.x (3.0 desde 2008)
- Download em https://www.python.org/downloads/
- No Windows, adicionar ao PATH -
https://docs.python.org/3/using/windows.html-
Python 2.x
- 2.7 saiu na metade de 2010, e é o último release
da versão 2;
- Diferenças entre 2.x e 3.x -
https://docs.python.org/3/whatsnew/
Preparação do ambiente - Editores
Vim, gVim (Mac, Linux, Windows) - http://www.vim.org
Preparação do ambiente - Editores
SublimeText (Mac, Linux, Windows) - http://www.sublimetext.com
Preparação do ambiente - Editores
Notepad++ (Windows) - http://notepad-plus-plus.org/
Preparação do ambiente - Editores
Gedit (Linux) - https://wiki.gnome.org/Apps/Gedit
Preparação do ambiente - IDEs
O que é IDE?
Integrated Development Environment
Ambiente de desenvolvimento integrado
Preparação do ambiente - IDEs
PyCharms Community - https://www.jetbrains.com/pycharm/download/
Preparação do ambiente - IDEs
NetBeans + Jython plugin - https://netbeans.org/downloads/
Preparação do ambiente - IDEs
Eclipse + PyDev plugin - http://www.eclipse.org/downloads/
Preparação do ambiente - IDEs
Existem outras:
- Komodo (Mac, Linux, Windows) - U$ 99 (personal)
- Wing IDE (Mac, Linux, Windows) - U$ 245 per user
(commercial)
- IDLE (Mac, Linux, Windows) – free – escrita em
Python
- Geany (Mac, Windows) – free
Dúvidas?
- Stack Overflow – http://www.stackoverflow.com
- Comunidade Python Brasil: http://wiki.python.org.br
- comp.lang.python:
https://groups.google.com/forum/#!forum/comp.lang.python
- #python-dev @ Freenode
- Livro ”Aprenda Computação com Python”:
http://aprendacompy.readthedocs.org/pt/latest/
- Livro ”Learn Python The Hard Way”:
http://learnpythonthehardway.org
- Codecademy: https://www.codecademy.com/learn/python
- Udacity: https://www.udacity.com/course/programming-
foundations-with-python--ud036
Referências
- Documentação oficial: http://docs.python.org/3/
- Livro ”Aprenda Computação com Python”:
http://aprendacompy.readthedocs.org/pt/latest/
- Python snake photo: http://chris-
kerns.com/python/learning-python-resources/

Mais conteúdo relacionado

Mais procurados

Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1engenhariadecomputacao
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
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 a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++PeslPinguim
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoInstituto CENTEC
 
Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)IoT Code Lab
 
Python
PythonPython
PythonTiago
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Karoline Tavares
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosTárcio Sales
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Leinylson Fontinele
 

Mais procurados (20)

Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
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 a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Bibliotecas c
Bibliotecas cBibliotecas c
Bibliotecas c
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de Programação
 
Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)
 
Python
PythonPython
Python
 
Python
PythonPython
Python
 
Python
PythonPython
Python
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e Autômatos
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
 

Destaque

Introduction to Python for Symbian S60
Introduction to Python for Symbian S60Introduction to Python for Symbian S60
Introduction to Python for Symbian S60Marcel Caraciolo
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para SymbianMarcel Caraciolo
 
Linux4all#1
Linux4all#1Linux4all#1
Linux4all#1Daniel
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Jonh Edson
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneJacson Tiola
 
A Fashion Brand's Guide to Building Consumer Intimacy in the Digital Age
A Fashion Brand's Guide to Building Consumer Intimacy in the Digital AgeA Fashion Brand's Guide to Building Consumer Intimacy in the Digital Age
A Fashion Brand's Guide to Building Consumer Intimacy in the Digital AgeAndy Larsen
 
Maria dulce catalonia flag
Maria dulce catalonia flagMaria dulce catalonia flag
Maria dulce catalonia flagGEMMMAD
 
Ana &amp; natalia
Ana &amp; nataliaAna &amp; natalia
Ana &amp; nataliaGEMMMAD
 
Planejamento de Comunicação Digital
Planejamento de Comunicação Digital Planejamento de Comunicação Digital
Planejamento de Comunicação Digital Rafael Guimaz
 
Presentación Suite Ebs
Presentación Suite EbsPresentación Suite Ebs
Presentación Suite EbsSuite EBS
 
REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...
REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...
REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...REMA Solutions Center Sp. z o.o.
 

Destaque (20)

2016/09/15 - Everest
2016/09/15 - Everest2016/09/15 - Everest
2016/09/15 - Everest
 
Python na Web
Python na WebPython na Web
Python na Web
 
Introduction to Python for Symbian S60
Introduction to Python for Symbian S60Introduction to Python for Symbian S60
Introduction to Python for Symbian S60
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para Symbian
 
Linux4all#1
Linux4all#1Linux4all#1
Linux4all#1
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0
 
Comandos linux
Comandos linux Comandos linux
Comandos linux
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e Plone
 
A Fashion Brand's Guide to Building Consumer Intimacy in the Digital Age
A Fashion Brand's Guide to Building Consumer Intimacy in the Digital AgeA Fashion Brand's Guide to Building Consumer Intimacy in the Digital Age
A Fashion Brand's Guide to Building Consumer Intimacy in the Digital Age
 
1º Actividad
1º Actividad1º Actividad
1º Actividad
 
Maria dulce catalonia flag
Maria dulce catalonia flagMaria dulce catalonia flag
Maria dulce catalonia flag
 
Ana &amp; natalia
Ana &amp; nataliaAna &amp; natalia
Ana &amp; natalia
 
Call That Girl
Call That GirlCall That Girl
Call That Girl
 
Planejamento de Comunicação Digital
Planejamento de Comunicação Digital Planejamento de Comunicação Digital
Planejamento de Comunicação Digital
 
Presentación Suite Ebs
Presentación Suite EbsPresentación Suite Ebs
Presentación Suite Ebs
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Introducao python 2010
Introducao python 2010Introducao python 2010
Introducao python 2010
 
REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...
REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...
REMA Solutions Center Sp z o.o. - Oprogramowanie do zarządzania nieruchomości...
 
Online ideation
Online ideationOnline ideation
Online ideation
 
Comandos Linux Parte 2
Comandos Linux Parte 2Comandos Linux Parte 2
Comandos Linux Parte 2
 

Semelhante a 2016/01/27 - Aprendendo a programar com Python

Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Aula2 ambientação a linguagem deprogramação python
Aula2   ambientação a linguagem deprogramação pythonAula2   ambientação a linguagem deprogramação python
Aula2 ambientação a linguagem deprogramação pythonCleyton Fábio
 
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
 
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
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxeFlapenta
 
Python_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfPython_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfValter moreira
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Marco Mendes
 
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
 
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
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python PoliRodrigo Lira
 
Introduction to Delphi - June 2004
Introduction to Delphi - June 2004Introduction to Delphi - June 2004
Introduction to Delphi - June 2004Michel Alves
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig LatinElen Arantza
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 

Semelhante a 2016/01/27 - Aprendendo a programar com Python (20)

Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Aula2 ambientação a linguagem deprogramação python
Aula2   ambientação a linguagem deprogramação pythonAula2   ambientação a linguagem deprogramação python
Aula2 ambientação a linguagem deprogramaçã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
 
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)
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxe
 
Apresentação Linguagem C
Apresentação Linguagem CApresentação Linguagem C
Apresentação Linguagem C
 
LP1 P01 - Python.pdf
LP1 P01 - Python.pdfLP1 P01 - Python.pdf
LP1 P01 - Python.pdf
 
Cap 2
Cap 2Cap 2
Cap 2
 
Cap 2
Cap 2Cap 2
Cap 2
 
Python_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfPython_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdf
 
Automatize tarefas maçantes com python - Aula 1
Automatize tarefas maçantes com python - Aula 1Automatize tarefas maçantes com python - Aula 1
Automatize tarefas maçantes com python - Aula 1
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Aula de C e C++
Aula de C e C++Aula de C e C++
Aula de C e C++
 
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
 
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
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python Poli
 
Introduction to Delphi - June 2004
Introduction to Delphi - June 2004Introduction to Delphi - June 2004
Introduction to Delphi - June 2004
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 

2016/01/27 - Aprendendo a programar com Python

  • 1. Aprendendo a programar com Python Jardel Weyrich jardel@teltecsolutions.com.br
  • 2.
  • 3.  Entender a composição de um programa;  Entender o fluxo de execução de um programa;  Aprender os conceitos básicos da programação;  Compreender as vantagens de cada tipo de variável (especificamente no Python);  Identificar necessidades de repetição;  Exercitar a lógica; Objetivos
  • 4. O que é uma linguagem? Padronização da comunicação. A linguagem escrita é formada por símbolos/caracteres e possui regras.
  • 5. História do Python - Monty Python! Grupo de humoristas ingleses; - Criada por Guido van Rossum em 1989; - Publicada em 1991 - versão 0.9.0; - Criada para substituir a linguagem ABC, usada no Amoeba OS (SO distribuído criado por Andrew Tanenbaum); - Baseada na linguagem ABC, com parte da sintaxe derivada do C, Haskell, Icon, Modula-3, e Perl; - Linguagem de propósito geral de alto nível (OO, imperativo, funcional, prodedural); - Uma das linguagens mais utilizadas no mundo;
  • 6. Por que usar uma linguagem de programação? Para dizer ao computador ou dispositivo como executar uma tarefa. Como fazemos isto? Através de um programa/software que contém dados e instruções.
  • 7. Como o computador entende a linguagem? $ python programa.py Executa o interpretador Python que lê todas instruções do arquivo (script) passado por parâmetro, compila e gera um arquivo .pyc ou .pyo (otimizado), e executa o programa. O programa é executado em ordem (fluxo de execução), de cima para baixo, linha a linha, instrução por instrução.
  • 8. Acesso ao laboratório Alunos de 1 a 20: ssh alunoX@192.168.254.53 Senha: python Primeiro acesso : screen –S alunoX Próximos acessos: screen -x Executando o interpretador interativo do Python 3: python3 Descobrindo a versão do Python: import sys; print(sys.version)
  • 9. Python – Hashbang (shebang) #!/usr/bin/env python3 print('Olá mundo!') O hashbang é respeitado somente se o programa for executado sem informar o interpretador explicitamente. Por exemplo: ./script.py # Ao invés de: python script.py
  • 10. Python – Encoding dos arquivos No Python 3 o encoding padrão é UTF-8. No Python 2, era necessário adicionar uma linha chamada magic comment informando o encoding. O interpretador identifica ela nas 2 primeiras linhas do arquivo. Por exemplo: #!/usr/bin/env python # -*- coding: utf-8 -*- print('Olá mundo!')
  • 11. Python – Comentários #!/usr/bin/env python3 # Comentário print('Olá mundo!') """ Outro comentário ""” ''' Mais um comentário '''
  • 12. Python – Variáveis Reserva um espaço na memória para armazenar um dado/valor de um determinado tipo, e o associa a um nome. var1 = 5 var2 = 10 var3 = var1 * var2
  • 13. Python – Variáveis Restrições de nomenclatura - Somente letras, números, underscore; - Não pode iniciar com número; - Não pode ser uma palavra reservada: and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield
  • 14. Python – Variáveis Alguns tipos importantes str (-ing) 'Texto entre aspas', 'palavra' bool (-ean) True ou False int (-eger) 1, 2, 10, 5000 float 3.1415, 9.8, 1.61803398875 list [ 'palavra', True, 1, 3.1415 ] dict { 'prop':'nome', 'tem':True } tuple ( 'palavra', True, 1, 3.1415 ) type Tipo dos tipos :-)
  • 15. Python – Variáveis Tipagem dinâmica: O último valor atribuído à variável indicará o tipo dela. var1 = "valor" # atribuição de string var2 = 'valor' # atribuição de string var1 = 5 # atribuição de inteiro var2 = 3.1337 # atribuição de float a, b, c = 1, 2, 'teste' # múltiplas atribuições
  • 16. Python – Variáveis str – Tipo composto por um conjunto imutável de caracteres, texto. fruta = "banana" marca = """Tesla""" str1 = 'abc' str2 = '''teste''' len(fruta) # retorna o comprimento, 6 fruta[0] # retorna 'b' fruta[2:5] # retorna 'nan' fruta.upper() # retorna 'BANANA'
  • 17. Python – Variáveis bool – Verdadeiro ou falso. var1 = True # verdadeiro var2 = False # falso George Boole? Matemático Inglês autodidata que definiu o primeiro sistema de lógica algébrica na metade do século XIX, nomeado álgebra booliana, ou de Boole.
  • 18. Python – Variáveis int – Números inteiros - sem limite de bits! var1 = 1991 var2 = 2016 NOTA: int e long eram diferentes antes do Python 3 – a PEP 237 unificou. * PEP: Python Enhancement Proposal
  • 19. Python – Variáveis float – Números decimais (double). var1 = 1.2345 var2 = 3.141592
  • 20. Python – Variáveis constantes – ”Variáveis” não mutáveis. Não são formalmente definidas pela linguagem, mas a convenção é nomear variáveis utilizando apenas letras maiúsculas. PI = 3.141592 MAX_LENGTH = 255 OBS: Podemos contornar utilizando class properties.
  • 21. Python – Variáveis – Objetos e valores No exemplo abaixo, a e b apontam para a mesma string? a = 'banana' b = 'banana' No primeiro caso, a e b se referem a duas coisas diferentes com o mesmo valor. No segundo caso, elas se referem à mesma coisa.
  • 22. Python – Variáveis – Objetos e valores Todo objeto possui um identificador único que pode ser obtido com a função id(). Se 2 objetos possuem o mesmo identificador, significa que apontam para (referenciam) o mesmo valor. >>> id(a) 135044008 >>> id(b) 135044008
  • 23. Python – Variáveis – Objetos e valores Listas se comportam diferente: >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> id(a) 135045528 >>> id(b) 135041704
  • 24. Python – Variáveis – Objetos e valores Referências, apelidos (aliases) >>> a = [1, 2, 3] >>> b = a
  • 25. Python – Escopo Global Variáveis criadas fora do escopo de qualquer função/classe são criadas no escopo global. O valor das variáveis globais é "esquecido" quando o programa termina.
  • 26. Python – Escopo Local Variáveis criadas dentro do escopo de funções ou classes tem escopo local. O valor das variáveis locais é "esquecido” automaticamente quando a função termina, ou quando o interpretador identifica que o objeto em questão não está mais sendo utilizado - neste caso, pode ser forçado via gc.collect().
  • 27. Python – Indentação Recuo do texto em relação a margem. No caso específico do Python, é determinante para a definição do escopo de um bloco de código.
  • 28. Python – Indentação def teste(): '''retorna um número''' my_int = 12 return my_int print(teste()) Causa o seguinte erro: IndentationError: expected an indented block
  • 29. Python – Indentação def teste(): '''retorna um número''' my_int = 12 return my_int print(teste()) Funciona!
  • 30. Python – Indentação – Tabs vs Espaços Fonte: XKCD
  • 31. Python – Operações Arity - Número de operandos ou argumentos que uma função recebe. - Nullary - Unary - Binary - Ternary - N-ary
  • 32. Python – Operações - Unária Operação com apenas um operando. Prefix notation operador operando Postfix notation operando operador
  • 33. Python – Operações - Binária Operação com dois operandos. Infix notation: 5 – 3 * 4 operando operador operando Outras notações: - Polish notation (PN): * - 5 3 4 - Reverse Polish notation (RPN): 5 3 4 * -
  • 34. Python – Operadores Operadores são utilizados em expressões. Os tipos são: - Aritméticos - Atribuição - Lógicos - Bitwise - Comparação - Membership (filiação?) - Identity (identidade)
  • 35. Python – Operadores – Aritméticos Soma : a + b, a + 2, 100 + 20 Subtração : a – b, a - 2, 100 - 20 Multiplicação : a * b, a * 2, 100 * 20 Divisão : a / b, a / 2, 100 / 20 Módulo* : a % b, a % 2, 100 % 2 Divisão floor*: a // b, a // 2, 100 // 2 Exponenciação : a ** b, a ** 2, 100 ** 3 * Módulo é o resto da divisão. Exemplo: 3 % 2 == 1. * Divisão floor é o quociente inteiro da divisão, sem decimais. Exemplo: 9 // 2 == 4
  • 36. Python – Operadores – Aritméticos Os operadores de soma (+) e ”módulo” (%) podem ser utilizados com strings também. O operador de módulo para strings tem outro nome, operador de formatação de string. var1 = 'abc' + 'def' # soma de 2 strings literais var2 = var1 + var1 # soma de 2 variáveis do tipo str var3 = 'Teste ' + var1 # soma de 1 variável do tipo str e uma string literal. var3 = 'Teste %d' % 123 # formata a string. Como o tipo str é imutável, uma nova str é criada em cada operação.
  • 37. Python – Operadores – Atribuição Como armazenar um valor em uma variável? a = b Atribui o valor do operando da direita ao operando da esquerda. O operador de atribuição requer que o operando da esquerda seja uma variável.
  • 38. Python – Operadores – Atribuição No Python, especificamente, é possível realizar múltiplas atribuições utilizando um único operador de atribuição: a, b = x, y (a, b) = x, y a, b, c = x, y, z a, (b, c) = [x, [y, z]]
  • 39. Python – Operadores – Atribuição Existem outros operadores de atribuição: a = a + b a = a / b a = a // b a += b a /= b a //= b a = a – b a = a % b a -= b a %= b a = a * b a = a ** b a *= b a **= b
  • 40. Python – Operadores – Lógicos Lembram do tipo bool? True e False? - Tabela verdade (1922); - Mapa de Karnaugh (1952), utilizado para simplificar uma equaçao lógica; - Diagrama de Venn (século XIX), utilizado para simbolizar graficamente propriedades, axiomas, e problemas relativos aos conjuntos;
  • 41. Python – Operadores – Lógicos and a and b or a or b not not a
  • 42. Python – Operadores – Lógicos Tabela verdade Conjunção A B A and B V V V V F F F V F F F F Disjunção A B A or B V V V V F V F V V F F F Disjunção exclusiva A B A xor B V V F V F V F V V F F F Negação da disjunção A B A nor B V V F V F F F V F F F V Negação A not A A V F F V
  • 43. Python – Operadores – Bitwise & binary and | binary or ^ binary xor ~ binary not >> binary right shift << binary left shift DICA: bin(numero) = representação binária
  • 44. Python – Operadores – Comparação < menor que > maior que <= menor ou igual a >= maior ou igual a == igual a != diferente de
  • 45. Python – Operadores – Membership? in True se o valor está presente numa sequência, False caso contrário (x in y) not in False se o valor está presente numa sequência, True caso contrário (x not in y)
  • 46. Python – Operadores - Identity is True se os operandos referenciam o mesmo objeto, False caso contrário (x is y, id(x) equals id(y)) is not False se os operandos referenciam o mesmo objeto, True caso contrário (x is not y, id(x) not equal id(y))
  • 47. Python – Precedência dos operadores Ordem na qual os operadores são aplicados aos operandos, a fim de evitar ambiguidades.
  • 48. Python – Precedência dos operadores ** Exponentiation ~ + - Complement, unary plus and minus * / % // Multiply, divide, modulo, floor div + - Addition and subtraction >> << Bitwise right shift, and left shift & Bitwise AND ^ | Bitwise XOR and OR <= < > >= Comparison <> == != Equality = %= /= //= -= += *= **= Assignment is is not Identify in not in Membership not or and Logical
  • 49. Python – Precedência dos operadores Expressão 1: 4 - 3 * 2 4 – (3 * 2) -2 Expressão 2: (4 – 3) * 2 (1) * 2 2 Expressão 3: (4 – 3) * 2 (1) * 2 2
  • 50. Python – Conversões str(10) integer -> string str(10.1) float -> string str({'v':True}) object -> string int('10') string -> integer float('10.1') string -> float int(10.1) float -> int float(10) int -> float
  • 51. Python – Formatadores de string nome = input('Qual é o seu nome?n') idade = int(input('Qual é o sua idade?n')) print('Olá %s!' % nome) print('%s, %d anos' % (nome, idade)) print('{0}, {1} anos'.format(nome, idade)) print('{}, {} anos'.format(nome, idade)) frase = '{a}, {b} anos'.format(a=nome, b=idade) print(frase)
  • 52. Python – Listas Conjunto mutável de valores (elementos) de qualquer tipo, com índices de 0 a N.
  • 53. Python – Listas # Criando # vazia lista = [] lista = list() # contendo números de 0 a 29 lista = list(range(30)) # contendo números de 5 a 29 lista = list(range(5, 30)) # contendo números múltiplos de 5 entre 0 e 29 lista = list(range(0, 30, 5))
  • 54. Python – Listas # Imprimindo print(lista) # Clonando lista2 = lista[:]
  • 55. Python – Listas # Adicionando itens lista.append(31) # Removendo itens lista.remove(5) lista.pop(i) del lista[0] del lista[2:4]
  • 56. Python – Listas # Acessando itens lista[0], lista[1], etc. lista[4-2] # Qual índice será acessado? lista[-1] # Qual índice será acessado? lista[-2] # Qual índice será acessado? # Alterando itens lista[0] = 1000
  • 57. Python – Listas # Tamanho, comprimento len(lista) # retorna o # de itens na lista # Ordenando sorted(lista) # retorna uma nova lista ordenada lista.sort() # muda a própria lista
  • 58. Python – Listas # Testando existência do item 10 in lista # retorna True ou False # Repartindo lista[start:end] # items de start até end-1 lista[start:] # items de start até o fim lista[:end] # items do início até end-1 lista[:] # uma cópia da lista inteira
  • 59. Python – Matrizes Representadas por listas aninhadas (lista de listas, ou array de arrays). m3x2 = [[1, 7, 9],[8, 4, 2]] m3x2[0] == [1, 7, 9] m3x2[1] == [8, 4, 2] m3x2[0][0] == 1 m3x2[1][1] == 4 m3x3 = [ [1,0,0], [0,1,0], [0,0,1] ]
  • 60. Python – Dicionários Tipo composto que utiliza qualquer tipo como índice.
  • 61. Python – Dicionários # Criando # vazio d = dict() d = {} # contendo propriedades d = {'name': 'value'} d = {'x': 1, 'y': 2} # usando uma lista de tuples d = dict([('x', 1), ('y', 2)])
  • 62. Python – Dicionários # Imprimindo print(d) # Clonando d2 = d.copy() # shallow copy d3 = copy.deepcopy(d)
  • 63. Python – Dicionários # Adicionando propriedades d['nome'] = 'Bruce Lee' d['ano'] = 1940 # Removendo propriedades del d['nome']
  • 64. Python – Dicionários Outras operações: len(d) # Retorna tamanho, compimento d.keys() # Retorna chaves (nome das propriedades) d.values() # Retorna valores (das propriedades) d.items() # Retorna lista de tuplas de chave-valor 'nome' in d # A propriedade existe? True ou False
  • 65. Python – Tuplas Lista de valores separados por vírgula, similar a lista, porém imutável.
  • 66. Python – Tuplas # Criando t = 'a', 'b', 'c', 'd', 'e' t = ('a', 'b', 'c', 'd', 'e') t = ('a',) # Note a vírgula no final Sem a vírgula, o interpretador entenderá que é apenas uma string entre parênteses.
  • 67. Python – Tuplas # Imprimindo print(t) # Tamanho, comprimento len(t) # retorna o # de itens na tupla
  • 68. Python – Tuplas # Alterando elementos t[0] = 'x' >>> TypeError: 'tuple' object does not support item assignment # Removendo elementos del t[0] >>> TypeError: 'tuple' object does not support item deletion
  • 69. Python – Tuplas # Testando existência do item 'a' in t # retorna True ou False # Repartindo t[start:end] # items de start até end-1 t[start:] # items de start até o fim t[:end] # items do início até end-1 t[:] # uma cópia da lista inteira
  • 70. Python – Tuplas # Trocando valores (sem tupla) temp = a a = b b = temp # Trocando valores usando atribuição de tupla a, b = b, a
  • 71. Python – Condições e condicionais Condições podem ser verdadeiras ou falsas. Por exemplo: A expressão x > 10 é verdadeira se o valor da variável x for maior que 10, caso contrário a expressão é falsa.
  • 72. Python – Condições e condicionais Condicionais dependem de condições, portanto elas permitem que você faça uma coisa ou outra, dependendo do resultado da condição. A condicional mais comum é a palavra-chave if. Por exemplo: if x > 10: print('maior que 10')
  • 73. Python – Condições e condicionais As vezes você quer fazer uma coisa quando a condição é verdadeira, e outra coisa quando ela é falsa. A palavra-chave else permite que você faça isto. Exemplo: if x > 10: print('maior que 10') else: print('menor que 10')
  • 74. Python – Condições e condicionais Condicionais aninhados: if x == y: print(x, 'e', y, 'são iguais') else: if x < y: print(x, 'é menor que', y) else: print(x, 'é maior que', y)
  • 75. Python – Condições e condicionais Também é possível testar várias condições, e fazer uma coisa somente para a primeira condição que for verdadeira. Para isto usamos a palavra-chave elif (abrev de else if). Exemplo: if x == y: print(x, 'e', y, 'são iguais') elif x < y: print(x, 'é menor que', y) else: print(x, 'é maior que', y)
  • 76. Python – Condições e condicionais Operador ternário (desde Python 2.5) a if cond else b Testa a condição cond, e retorna a ou b, dependendo do resultado da condição. resultado = 'maior' if x > 10 else 'menor' print('x é %s que 10' % resultado)
  • 77. Python – Condições e condicionais import time agora = time.localtime() hora = agora.tm_hour if hora < 7: print('dormindo') elif hora < 8: print('indo trabalhar') elif hora < 13 and hora > 12: print('almoçando') elif hora < 18: print('trabalhando') elif hora < 19: print('voltando pra casa') elif hora < 20: print('jantando') elif hora < 22: print('descansando') else: print('dormindo')
  • 78. Python – Loops (laços) É comum a necessidade de repetir uma ou mais instruções um determinado número de vezes. Para isto, podemos usar a palavra-chave while. Exemplo: lista = [0,10,20,30,40,50] indice = 0 while indice < len(lista): print('num = %d' % lista[indice]) indice += 1
  • 79. Python – Loops (laços) Utilizar um índice para percorrer um conjunto de valores é tão comum que o Python oferece uma alternativa simplificada, as palavras-chave for-in. Exemplo: lista = [0,10,20,30,40,50] for num in lista: print('num = %d' % num) for i, num in enumerate(lista): print(’lista[%d] = %d' % (i, num))
  • 80. Python – Loops (laços) Outro exemplo: prefixos = 'JKLMNOPQ' sufixo = 'ython' for letra in prefixos: print(letra + sufixo)
  • 81. Python – Funções Função é uma sequência nomeada de instruções ou comandos que realizam uma operação desejada. - Deve ser definida/declarada ANTES de ser utilizada, chamada, invocada; - Pode ser chamada repetidamente; - Pode chamar outra função (composição), inclusive a si mesma (recursividade); - Pode receber argumentos (parâmetros) ou não; - Pode retornar um resultado ou não;
  • 82. Python – Funções - A definição de uma função não altera o fluxo de execução do programa; - Os comandos dentro da função não são executados até a função ser chamada; - Chamadas de função são como um desvio no fluxo de execução. Em vez de ir para o próximo comando, o fluxo salta para a primeira linha da função chamada, executa todos os comandos lá e então volta atrás para retomar de onde havia deixado.
  • 83. Python – Funções Como declarar uma função? def NOME(): COMANDOS # corpo da função, function’s body def NOME(): pass # função vazia, sem implementação
  • 84. Python – Funções def OlaMundo(): texto = 'Olá mundo!' print(texto) def OlaNovamente(): texto = 'Olá novamente!' print(texto)
  • 85. Python – Funções Como chamar (invocar, executar) uma função? OlaMundo() OlaNovamente()
  • 86. Python – Funções – Pergunta (global1.py) No programa abaixo, qual valor será mostrado na tela? texto = 'INICIAL' def funcao(): texto = 'MUDOU’ funcao() print(texto)
  • 87. Python – Funções – Pergunta (global1.py) A resposta é INICIAL. Mesmo utilizando a mesma nomenclatura, neste caso a atribuição cria uma variável no escopo local. De outra forma teríamos problemas inesperados causados por funções alterando valores de variáveis globais.
  • 88. Python – global (global2.py) Para alterarmos variáveis globais, utilizamos a palavra- chave global. É necessário utilizar global somente se houver atribuição. Exemplo: texto = 'INICIAL' def funcao(): # Referencia global – não será criada localmente global texto texto = 'MUDOU’ funcao() print(texto) # Imprime MUDOU
  • 89. Python – Funções – Pergunta (escopo1.py) O programa abaixo funciona e mostra 'INICIAL' na tela? def funcao(): print(val) val = 'INICIAL' funcao()
  • 90. Python – Funções – Pergunta (escopo1.py) A resposta é SIM. A função é chamada somente APÓS a inicialização da variável, portanto o valor dela será mostrado corretamente.
  • 91. Python – Funções – Pergunta (escopo2.py) Se a função fosse chamada antes da inicialização da variável, receberíamos um erro NameError, pois a variável não existe em nenhum escopo acessível. Exemplo: def funcao(): print(val) funcao() val = 'INICIAL'
  • 92. Python – Funções – Pergunta (escopo3.py) E neste caso, o que é mostrado na tela? def funcao(): print(texto) texto = 'Eu amo São Paulo!' print(texto) texto = 'Eu amo Floripa!' funcao()
  • 93. Python – Funções – Pergunta (escopo3.py) Um erro! UnboundLocalError: local variable 'texto' referenced before assignment Um valor é atribuído à variável texto dentro da função, (sem a palavra-chave global), portanto ela é criada no escopo local. O erro ocorre pois tentamos imprimir seu valor antes de atribuí-lo.
  • 94. Python – Funções - Argumentos Argumentos são valores passados para a função, e podem influenciar no fluxo de execução, ou comportamento, da função. Argumentos tem escopo LOCAL.
  • 95. Python – Funções - Argumentos Como declarar uma função com argumentos? def NOME(ARGUMENTOS): pass def NOME(arg1, arg2, arg3): pass
  • 96. Python – Funções - Argumentos def nome1(arg1): print('Olá', arg1) def nome2(arg1, arg2): print('Olá', arg1, arg2) nome1('Teltec') nome2('Teltec', 'Solutions') nome1('Teltec', 'Solutions') # TypeError: nome1() takes 1 positional argument but 2 were given
  • 97. Python – Funções - Retorno O resultado de uma função é chamado de valor de retorno. A palavra chave return permite que uma função retorne valores, e também permite terminar a execução de uma função antes de ela alcançar seu fim. Um uso comum para isto é ao detectar uma condição de erro.
  • 98. Python – Funções - Retorno Exemplo de retorno precoce (antecipado): def calculaPotencia(num, pot): if num <= 0 or pot <= 0: print('Somente números positivos') return return num ** pot
  • 99. Python – Funções - Retorno def nada(): return # ou return None def potencia(valor, potencia): return valor ** potencia def fatorial(num): import math return math.factorial(num) def tupla(): return True, 'Teste'
  • 100. Python – Funções - Exemplos Exemplo 1: >>> import functools >>> def add(x, y): return x + y ... >>> functools.reduce(add, range(1, 11), 0) 55 >>> help(functools.reduce)
  • 101. Python – Funções - Exemplos Exemplo 1 simplificado: >>> import functools >>> functools.reduce(lambda x,y: x+y, range(1, 11)) 55
  • 102. Python – Funções – Exemplos Exemplo 1 simplificado de outra forma: >>> import functools >>> import operator >>> functools.reduce(operator.add, range(1, 11)) 55
  • 103. Python – Funções - Exemplos Exemplo 2: >>> import functools >>> import operator >>> def sum(seq): ... return functools.reduce(operator.add, seq, 0) ... >>> sum(range(1, 11)) 55 >>> sum([]) 0
  • 104. Python – Funções - Exemplos Exemplo 3: >>> squares = [] >>> for x in range(10): ... squares.append(x ** 2) ... >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  • 105. Python – Funções - Exemplos Exemplo 3 simplificado: >>> squares = [x ** 2 for x in range(10)] >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  • 106. Python – Módulos Módulo é um arquivo .py contendo código Python. Ele serve principalmente para: - Dividir código extenso; - Facilitar a manutenção do código; - Facilitar a reutilização de código entre diferentes partes do programa; Para que o módulo A tenha visibilidade sobre as definições e declarações contidas no módulo B, precisamos importar o módulo B no módulo A.
  • 107. Python – Módulos Para fazermos isto utilizamos a palavra-chave import, ou from- import. O nome do módulo é o nome do arquivo sem a extensão .py. Exemplos: import modulo # Importa o módulo # Importa todas definições/declarações contidas no módulo from modulo import * # Evite, pois POLUI o namespace! # Importa só a definição contida no módulo from modulo import definicao # Importa o módulo do diretório do script atual from . import modulo # Importa o módulo do diretório pai do script atual from .. import modulo
  • 108. Python – Module Search Path (sys.path) Quando um módulo (teste1) é importado, o interpretador primeiro procura por um módulo built-in com este nome. Se ele não encontrar, então ele procura por um arquivo com este nome (teste1.py) em uma lista de diretórios presentes na variável sys.path. Ela é inicializada em ordem por: - Diretório contendo o script sendo executado, ou o diretório atual (caso não esteja executando um script); - Variável de ambiente chamada PYTHONPATH; - Diretórios padrões da instalação do interpretador; import sys; print('n'.join(sys.path))
  • 109. Python – Pacotes Pacotes são uma forma de estruturar os módulos e organizá-los em namespaces. Exemplo: import pacote # Importa o pacote inteiro import pacote.modulo # Importa o módulo from pacote import modulo # Importa o módulo # Importa todas definições/declarações contidas no módulo from pacote.modulo import * # Evite, pois POLUI o namespace! # Importa só a definição contida no módulo from pacote.modulo import definicao
  • 110. Python – Pacotes O nome de módulo A.B indica um sub-módulo com nome B contido dentro do pacote com nome A. Exemplo: src/ |-- main.py # Módulo main |-- A/ # Pacote A |-- __init__.py # Veremos a seguir |-- B.py # Sub-módulo B import A.B # Importando B.py a partir de main.py
  • 111. Python – Pacotes O que é preciso para criar um pacote? - Criar um diretório; - Criar um arquivo __init__.py dentro deste diretório; A existência desse arquivo é exigida para fazer o Python tratar o diretório como um pacote. Se houver código nele, será executado quando o pacote ou qualquer um dos módulos do pacote for importado.
  • 112. Python – The Python Standard Library  O Python vem com uma biblioteca padrão de tipos, constantes, exceções, e módulos. Alguns destes são built-in, ou seja, estão dentro do interpretador.  O conjunto de módulos padrão varia de acordo com a plataforma. Por exemplo, o módulo winreg só existe em sistemas Windows.  Podemos ver todos built-ins assim: import builtins; dir(builtins)
  • 113. Python – The Python Standard Library  Podemos consultar a documentação de qualquer tipo/função/etc diretamente a partir do interpretador: help(nome)  Podemos consultar a documentação de toda biblioteca em: https://docs.python.org/3/library/
  • 114. Dicas - Syntax-highlight: Ajuda! - Code-completion : Ajuda! Mas se você está estudando a linguagem, pode te atrapalhar. - IDE : Ajuda quem gosta, atrapalha quem não gosta. - Versionamento: Se você ainda não conhece, fale comigo. - Indentação : Use apenas tabs ou apenas espaços – Não misture-os! E não converta a indentação manualmente - Use um editor que faça isto. - Nomenclaturas: Utilize nomes que descrevam a propósito.
  • 115. Dicas Entender mensagens de erro é fundamental!
  • 116. Dicas Nada substitui a prática e a experiência.
  • 117. Próximo(s) treinamento(s)? 1. Git – Como versionar meus projetos? 2. Python intermediário: Programação orientada a objetos 3. Desmistificando os Certificados Digitais
  • 118. Preparação do ambiente - Interpretador - Python 3.x (3.0 desde 2008) - Download em https://www.python.org/downloads/ - No Windows, adicionar ao PATH - https://docs.python.org/3/using/windows.html- Python 2.x - 2.7 saiu na metade de 2010, e é o último release da versão 2; - Diferenças entre 2.x e 3.x - https://docs.python.org/3/whatsnew/
  • 119. Preparação do ambiente - Editores Vim, gVim (Mac, Linux, Windows) - http://www.vim.org
  • 120. Preparação do ambiente - Editores SublimeText (Mac, Linux, Windows) - http://www.sublimetext.com
  • 121. Preparação do ambiente - Editores Notepad++ (Windows) - http://notepad-plus-plus.org/
  • 122. Preparação do ambiente - Editores Gedit (Linux) - https://wiki.gnome.org/Apps/Gedit
  • 123. Preparação do ambiente - IDEs O que é IDE? Integrated Development Environment Ambiente de desenvolvimento integrado
  • 124. Preparação do ambiente - IDEs PyCharms Community - https://www.jetbrains.com/pycharm/download/
  • 125. Preparação do ambiente - IDEs NetBeans + Jython plugin - https://netbeans.org/downloads/
  • 126. Preparação do ambiente - IDEs Eclipse + PyDev plugin - http://www.eclipse.org/downloads/
  • 127. Preparação do ambiente - IDEs Existem outras: - Komodo (Mac, Linux, Windows) - U$ 99 (personal) - Wing IDE (Mac, Linux, Windows) - U$ 245 per user (commercial) - IDLE (Mac, Linux, Windows) – free – escrita em Python - Geany (Mac, Windows) – free
  • 128. Dúvidas? - Stack Overflow – http://www.stackoverflow.com - Comunidade Python Brasil: http://wiki.python.org.br - comp.lang.python: https://groups.google.com/forum/#!forum/comp.lang.python - #python-dev @ Freenode - Livro ”Aprenda Computação com Python”: http://aprendacompy.readthedocs.org/pt/latest/ - Livro ”Learn Python The Hard Way”: http://learnpythonthehardway.org - Codecademy: https://www.codecademy.com/learn/python - Udacity: https://www.udacity.com/course/programming- foundations-with-python--ud036
  • 129. Referências - Documentação oficial: http://docs.python.org/3/ - Livro ”Aprenda Computação com Python”: http://aprendacompy.readthedocs.org/pt/latest/ - Python snake photo: http://chris- kerns.com/python/learning-python-resources/