2016/01/27 - Aprendendo a programar com Python

714 visualizações

Publicada em

Apresentação utilizada no treinamento com duração de 10 horas para um grupo de colaboradores da Teltec Solutions - http://teltecsolutions.com.br.

O material de apoio contém exemplos, exercícios e soluções, e pode ser encontrado em https://github.com/jweyrich/aprendendo-a-programar-com-python

Publicada em: Software
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
714
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

2016/01/27 - Aprendendo a programar com Python

  1. 1. Aprendendo a programar com Python Jardel Weyrich jardel@teltecsolutions.com.br
  2. 2.  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
  3. 3. O que é uma linguagem? Padronização da comunicação. A linguagem escrita é formada por símbolos/caracteres e possui regras.
  4. 4. 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;
  5. 5. 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.
  6. 6. 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.
  7. 7. 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)
  8. 8. 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
  9. 9. 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!')
  10. 10. Python – Comentários #!/usr/bin/env python3 # Comentário print('Olá mundo!') """ Outro comentário ""” ''' Mais um comentário '''
  11. 11. 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
  12. 12. 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
  13. 13. 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 :-)
  14. 14. 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
  15. 15. 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'
  16. 16. 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.
  17. 17. 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
  18. 18. Python – Variáveis float – Números decimais (double). var1 = 1.2345 var2 = 3.141592
  19. 19. 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.
  20. 20. 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.
  21. 21. 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
  22. 22. Python – Variáveis – Objetos e valores Listas se comportam diferente: >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> id(a) 135045528 >>> id(b) 135041704
  23. 23. Python – Variáveis – Objetos e valores Referências, apelidos (aliases) >>> a = [1, 2, 3] >>> b = a
  24. 24. 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.
  25. 25. 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().
  26. 26. 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.
  27. 27. 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
  28. 28. Python – Indentação def teste(): '''retorna um número''' my_int = 12 return my_int print(teste()) Funciona!
  29. 29. Python – Indentação – Tabs vs Espaços Fonte: XKCD
  30. 30. Python – Operações Arity - Número de operandos ou argumentos que uma função recebe. - Nullary - Unary - Binary - Ternary - N-ary
  31. 31. Python – Operações - Unária Operação com apenas um operando. Prefix notation operador operando Postfix notation operando operador
  32. 32. 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 * -
  33. 33. 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)
  34. 34. 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
  35. 35. 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.
  36. 36. 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.
  37. 37. 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]]
  38. 38. 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
  39. 39. 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;
  40. 40. Python – Operadores – Lógicos and a and b or a or b not not a
  41. 41. 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
  42. 42. Python – Operadores – Bitwise & binary and | binary or ^ binary xor ~ binary not >> binary right shift << binary left shift DICA: bin(numero) = representação binária
  43. 43. Python – Operadores – Comparação < menor que > maior que <= menor ou igual a >= maior ou igual a == igual a != diferente de
  44. 44. 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)
  45. 45. 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))
  46. 46. Python – Precedência dos operadores Ordem na qual os operadores são aplicados aos operandos, a fim de evitar ambiguidades.
  47. 47. 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
  48. 48. 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
  49. 49. 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
  50. 50. 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)
  51. 51. Python – Listas Conjunto mutável de valores (elementos) de qualquer tipo, com índices de 0 a N.
  52. 52. 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))
  53. 53. Python – Listas # Imprimindo print(lista) # Clonando lista2 = lista[:]
  54. 54. Python – Listas # Adicionando itens lista.append(31) # Removendo itens lista.remove(5) lista.pop(i) del lista[0] del lista[2:4]
  55. 55. 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
  56. 56. 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
  57. 57. 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
  58. 58. 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] ]
  59. 59. Python – Dicionários Tipo composto que utiliza qualquer tipo como índice.
  60. 60. 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)])
  61. 61. Python – Dicionários # Imprimindo print(d) # Clonando d2 = d.copy() # shallow copy d3 = copy.deepcopy(d)
  62. 62. Python – Dicionários # Adicionando propriedades d['nome'] = 'Bruce Lee' d['ano'] = 1940 # Removendo propriedades del d['nome']
  63. 63. 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
  64. 64. Python – Tuplas Lista de valores separados por vírgula, similar a lista, porém imutável.
  65. 65. 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.
  66. 66. Python – Tuplas # Imprimindo print(t) # Tamanho, comprimento len(t) # retorna o # de itens na tupla
  67. 67. 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
  68. 68. 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
  69. 69. Python – Tuplas # Trocando valores (sem tupla) temp = a a = b b = temp # Trocando valores usando atribuição de tupla a, b = b, a
  70. 70. 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.
  71. 71. 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')
  72. 72. 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')
  73. 73. 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)
  74. 74. 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)
  75. 75. 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)
  76. 76. 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')
  77. 77. 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
  78. 78. 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))
  79. 79. Python – Loops (laços) Outro exemplo: prefixos = 'JKLMNOPQ' sufixo = 'ython' for letra in prefixos: print(letra + sufixo)
  80. 80. 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;
  81. 81. 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.
  82. 82. 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
  83. 83. Python – Funções def OlaMundo(): texto = 'Olá mundo!' print(texto) def OlaNovamente(): texto = 'Olá novamente!' print(texto)
  84. 84. Python – Funções Como chamar (invocar, executar) uma função? OlaMundo() OlaNovamente()
  85. 85. Python – Funções – Pergunta (global1.py) No programa abaixo, qual valor será mostrado na tela? texto = 'INICIAL' def funcao(): texto = 'MUDOU’ funcao() print(texto)
  86. 86. 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.
  87. 87. 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
  88. 88. Python – Funções – Pergunta (escopo1.py) O programa abaixo funciona e mostra 'INICIAL' na tela? def funcao(): print(val) val = 'INICIAL' funcao()
  89. 89. 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.
  90. 90. 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'
  91. 91. 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()
  92. 92. 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.
  93. 93. 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.
  94. 94. Python – Funções - Argumentos Como declarar uma função com argumentos? def NOME(ARGUMENTOS): pass def NOME(arg1, arg2, arg3): pass
  95. 95. 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
  96. 96. 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.
  97. 97. 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
  98. 98. 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'
  99. 99. 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)
  100. 100. Python – Funções - Exemplos Exemplo 1 simplificado: >>> import functools >>> functools.reduce(lambda x,y: x+y, range(1, 11)) 55
  101. 101. Python – Funções – Exemplos Exemplo 1 simplificado de outra forma: >>> import functools >>> import operator >>> functools.reduce(operator.add, range(1, 11)) 55
  102. 102. 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
  103. 103. 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]
  104. 104. 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]
  105. 105. 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.
  106. 106. 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
  107. 107. 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))
  108. 108. 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
  109. 109. 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
  110. 110. 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.
  111. 111. 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)
  112. 112. 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/
  113. 113. 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.
  114. 114. Dicas Entender mensagens de erro é fundamental!
  115. 115. Dicas Nada substitui a prática e a experiência.
  116. 116. 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
  117. 117. 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/
  118. 118. Preparação do ambiente - Editores Vim, gVim (Mac, Linux, Windows) - http://www.vim.org
  119. 119. Preparação do ambiente - Editores SublimeText (Mac, Linux, Windows) - http://www.sublimetext.com
  120. 120. Preparação do ambiente - Editores Notepad++ (Windows) - http://notepad-plus-plus.org/
  121. 121. Preparação do ambiente - Editores Gedit (Linux) - https://wiki.gnome.org/Apps/Gedit
  122. 122. Preparação do ambiente - IDEs O que é IDE? Integrated Development Environment Ambiente de desenvolvimento integrado
  123. 123. Preparação do ambiente - IDEs PyCharms Community - https://www.jetbrains.com/pycharm/download/
  124. 124. Preparação do ambiente - IDEs NetBeans + Jython plugin - https://netbeans.org/downloads/
  125. 125. Preparação do ambiente - IDEs Eclipse + PyDev plugin - http://www.eclipse.org/downloads/
  126. 126. 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
  127. 127. 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
  128. 128. 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/

×