Python para desenvolvedores - material apoio (parte I)

4,651 views

Published on

Eu investi algum tempo fazendo um material de apoio para o livro Python para Desenvolvedores</a>, do Luis Eduardo Borges. É um conjunto de slides para o capitulo I.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,651
On SlideShare
0
From Embeds
0
Number of Embeds
189
Actions
Shares
0
Downloads
123
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Python para desenvolvedores - material apoio (parte I)

  1. 1. Python para desenvolvedores Material de apoio Marcelo Barros de Almeida [email_address]
  2. 2. Licença http://creativecommons.org/licenses/by-nc-sa/2.5/br/ <ul><li>Você tem a liberdade de: </li><ul><li>Compartilhar — copiar, distribuir e transmitir a obra.
  3. 3. Remixar — criar obras derivadas </li></ul><li>Sob as seguintes condições: </li><ul><li>Atribuição — Você deve creditar a obra da forma especificada pelo autor ou licenciante (mas não de maneira que sugira que estes concedem qualquer aval a você ou ao seu uso da obra).
  4. 4. Uso não-comercial — Você não pode usar esta obra para fins comerciais.
  5. 5. Compartilhamento pela mesma licença — Se você alterar, transformar ou criar em cima desta obra, você poderá distribuir a obra resultante apenas sob a mesma licença, ou sob uma licença similar à presente. </li></ul></ul>
  6. 6. Sumário <ul><li>Parte I </li><ul><li>Características do Python
  7. 7. Blocos de código, controle de fluxo e laços
  8. 8. Tipos e operadores
  9. 9. Listas, tuplas e dicionários
  10. 10. Funções </li></ul></ul>
  11. 11. Parte I Conceitos básicos sobre a linguagem de programação Python, incluindo sintaxe, tipos, estruturas de controle, funções e documentação.
  12. 12. O que é Python ? Python é uma linguagem de altíssimo nível (em inglês, Very High Level Language) orientada a objeto, de tipagem dinâmica e forte, interpretada e interativa.
  13. 13. Características do Python <ul><li>Sintaxe clara e concisa (legibilidade)
  14. 14. Suporte a estruturas de alto nível
  15. 15. Grande número de módulos
  16. 16. Multiparadigma: procedural, funcional e orientação a objetos
  17. 17. Moderna (geradores, introspecção, metaclasses, persistência, unidades de teste, etc)
  18. 18. É uma linguagem interpretada
  19. 19. Código aberto
  20. 20. Fácil integração com C/C++ </li></ul>
  21. 21. Histórico do Python <ul><li>Criada em 1990, por Guido van Rossum (Holanda)
  22. 22. Baseada na linguagem ABC
  23. 23. Foco inicial em físicos e engenheiros
  24. 24. Bastante aceita atualmente: </li><ul><li>Google
  25. 25. Yahoo
  26. 26. Microsoft (IronPython)
  27. 27. Nokia (desenvolvimento para celulares)
  28. 28. Disney </li></ul></ul>
  29. 29. Versões <ul><li>Python é escrito originalmente em C (Cpython)
  30. 30. Existem versões para .NET (IronPython), JVM (Jython) e até mesmo em Python (PyPy)
  31. 31. Versões: </li><ul><li>2.6.4: maior compatibilidade com a base atual
  32. 32. 3.1.1: versão com as mudanças mais recentes do Python
  33. 33. Download: </li><ul><li>http://www.python.org/download
  34. 34. Suporte a OS X, Linux, Unix, Windows </li></ul></ul></ul>
  35. 35. Executando um programa <ul><li>Arquivos com extensão ”.py”. No Windows existe também ”.pyw”, que não abre um console
  36. 36. Execução geralmente pela linha de comando: </li><ul><li>python progama.py </li></ul></ul>
  37. 37. Tipagem dinâmica (e forte) <ul><li>Não se faz declaração de variáveis. A variável é inferida pelo interpretador em tempo de execução ( duck typing )
  38. 38. Python é fortemente tipada, isto é, os tipos são checados no momento da operação e conversões precisam ser explícitas </li></ul>
  39. 39. Compilação e interpretação <ul><li>O código fonte é traduzido em bytecodes e armazenado em disco para reuso posterior
  40. 40. Bytecode é um formato binário multiplataforma </li><ul><li>.pyc: byte code normal
  41. 41. .pyo: byte code otimizado </li></ul><li>O bytecode pode ser empacotado com o interpretador para distribuição de um executável único </li></ul>
  42. 42. Compilação e interpretação Código fonte (.py) Símbolos Árvore sintática Bytecode (.pyc / .pyo) Binários Instaladores Interpretador
  43. 43. Modo interativo <ul><li>O interpretador Python pode ser usado de forma interativa, na qual as linhas de código são digitadas em uma linha de comando), bastando executar o interpretador (python)
  44. 44. O modo interativo é muito prático para testes e modificações </li></ul>
  45. 45. Ferramentas <ul><li>IDEs: </li><ul><li>PyScripter
  46. 46. Stani's Python Editor (SPE)
  47. 47. Eric
  48. 48. PyDev (plugin para o Eclipse) </li></ul><li>Editores de texto: </li><ul><li>SciTE
  49. 49. Notepad++
  50. 50. PSPad </li></ul></ul>
  51. 51. Ferramentas <ul><li>Shell: </li><ul><li>PyCrust (gráfico)
  52. 52. Ipython (texto) </li></ul><li>Empacotadores (criação de executáveis): </li><ul><li>Py2exe (apenas para Windows)
  53. 53. cx_Freeze (portável) </li></ul></ul>
  54. 54. Ferramentas <ul><li>Frameworks: </li><ul><li>Web: Django, TurboGears, Zope e web2py
  55. 55. Interface gráfica: wxPython, PyGTK e PyQt
  56. 56. Processamento cientifico: NumPy e SciPy
  57. 57. Processamento de imagens: PIL
  58. 58. 2D: Matplotlib e SVGFig
  59. 59. 3D: Visual Python, PyOpenGL e Python Ogre
  60. 60. Mapeamento objeto-relacional: SQLAlchemy e SQLObject </li></ul></ul>
  61. 61. Cultura, jargão e curiosidades <ul><li>Nome proveniente de um programa da TV britânica chamado Monty Python Flying Circus
  62. 62. Pythonic : usado para indicar que algo é compatível com as premissas de projeto
  63. 63. Ideais da linguagem, por Tim Peters: </li><ul><li>import this </li></ul><li>Benevolent Dictator for Life (BDFL) é como Guido é conhecido na comunidade Python
  64. 64. Propostas para melhoria da linguagem são chamadas de PEPs ( Python Enhancement Proposals ) </li></ul>
  65. 65. Sintaxe <ul><li>Comentários começam com ”#” e vão até o fim da linha
  66. 66. Existem também comentários funcionais para: </li><ul><li>Indicação do interpretador
  67. 67. Indicação da codificação do arquivo </li></ul><li>Programa constituído de linhas. Múltiplas linhas devem usar o ”” ao final da linha </li></ul>
  68. 68. Blocos de código <ul><li>Os blocos são delimitados pela endentação, que deve ser constante no bloco
  69. 69. PEP-0008: usar quatro espaços para endentação
  70. 70. A linha anterior ao bloco termina com ”:”, geralmente uma estrutura de controle ou declaração de uma nova estrutura
  71. 71. Não misture espaços e tabulação ! </li></ul>
  72. 72. Blocos de código Programa Instruções Enquanto condição: Dois pontos obrigatórios Se condição: Instruções Senão: Instruções Instruções Inicio de um bloco Fim dos dois blocos Outro bloco Fim do programa Instruções Inicio do programa
  73. 73. Blocos de código <ul><li>Exemplo: </li></ul><ul><li>Saída: </li></ul><ul><li>O operador ”%” calcula o módulo da divisão </li></ul>
  74. 74. Objetos <ul><li>Python é orientado a objetos. Até mesmo os tipos básicos são objetos
  75. 75. O acesso a atributos e métodos é feito via o operador ponto (”.”) </li></ul>
  76. 76. Controle de fluxo (if-else) <ul><li><condição>: sentença que possa ser avaliada como verdadeira ou falsa
  77. 77. <bloco de código>: sequência de linhas de comando
  78. 78. As clausulas elif e else são opcionais e podem existir vários elifs para o mesmo if, porém apenas um else ao final
  79. 79. Parênteses só são necessários para evitar ambiguidades </li></ul>
  80. 80. Controle de fluxo (if-else) <ul><li>Exemplo: </li></ul>
  81. 81. Laços (for) <ul><li>Permite iterar sobre sequências estáticas ou iteradores
  82. 82. Aceita instruções break e continue , além de else
  83. 83. range(m,n,p) ou xrange(m,n,p) são úteis </li></ul>
  84. 84. Laços (for) <ul><li>O for itera sobre objetos e não indexes ! </li></ul>Lista x aponta para 1. 1 2 3 4 5 6 ... x Primeira iteração A referência foi atualizada. Lista 1 2 3 4 5 6 ... x Segunda iteração x é apenas uma referência. x aponta para 2.
  85. 85. Laços (while) <ul><li>Aceita instruções break e continue , além de else
  86. 86. Lembre de usar True e False no teste </li></ul>
  87. 87. Tipos <ul><li>Tipos simples: </li><ul><li>Números (inteiro, real, complexo) e strings </li></ul><li>Tipos complexos: </li><ul><li>Listas, tuplas e dicionários </li></ul><li>Os tipos podem ser: </li><ul><li>Mutáveis: permite alteração no conteúdo
  88. 88. Imutáveis: não permitem alteração no conteúdo (uma cópia é sempre feita em caso de alteração) </li></ul><li>Python usa referências
  89. 89. Python usa coletor de lixo por contagem de referência </li></ul>
  90. 90. Tipos nuḿericos <ul><li>Os tipos inteiros tem dimensão arbitrária e são imutáveis
  91. 91. Notação científica: 1.2e22
  92. 92. Funções builtin de conversão: </li><ul><li>int(), float(), abs(), oct(), hex(), pow(), round() </li></ul><li>Suporta vários tipos de operações: </li><ul><li>Aritméticas: +, -, *, **, /, //, %
  93. 93. Lógicas: <. >, <=. >=, ==, !=
  94. 94. Bit-a-bit: <<, >>, &, |, ^, ~ </li></ul></ul>
  95. 95. Tipos numéricos
  96. 96. Tipos string <ul><li>Os tipos string são imutáveis e podem ser inicializadas com: </li><ul><li>Aspas simples ou duplas
  97. 97. Em várias linhas com três aspas simples ou duplas
  98. 98. Sem expansão de caracteres especiais se começar com ”r”
  99. 99. Unicode, se comelar com ”u” </li></ul><li>Funções builtin de conversão: </li><ul><li>str(), unicode(), len() </li></ul><li>O módulo UserString suporta strings mutáveis </li></ul>
  100. 100. Operadores booleanos <ul><li>Com operadores lógicos é possível construir condições mais complexas para controlar desvios condicionais e laços.
  101. 101. Os operadores booleanos: and , or , not , is e in : </li><ul><li>is: retorna verdadeiro se receber duas referências ao mesmo objeto e falso em caso contrário
  102. 102. in: retorna verdadeiro se receber um item e uma lista e o item ocorrer uma ou mais vezes na lista e falso em caso contrário.
  103. 103. and, or e not são os equivalentes a &&, || e ! do C </li></ul></ul>
  104. 104. Tipos string
  105. 105. Interpolação de strings <ul><li>Feita através do operador ”%”, similar ao printf da linguagem C
  106. 106. Símbolos usados na interpolação: </li><ul><li>%s: string
  107. 107. %d: inteiro
  108. 108. %o: octal
  109. 109. %x: hexacimal
  110. 110. %f: real
  111. 111. %e: real exponencial
  112. 112. %%: sinal de percentagem </li></ul></ul>
  113. 113. Interpolação de strings
  114. 114. ”Fatiando” strings (slices) <ul><li>O uso de conchetes e indexes permite o fatiamento das strings de forma bem flexível
  115. 115. Os índices no Python: </li><ul><li>Começam em zero
  116. 116. Contam a partir do fim se forem negativos
  117. 117. Podem ser definidos como trechos, na forma [inicio:fim+1:intervalo] </li><ul><li>Inicio: default é 0, fim: default é len(str) e intervalo: default é 1
  118. 118. Invertendo uma string: [::-1] </li></ul></ul><li>Existem várias funções úteis no módulo string </li></ul>
  119. 119. ”Fatiando” strings (slices) Fatiando strings String s P y t h o n 0 1 2 3 4 5 s[0] Caracteres Posições s[:2] s[2:] s[-1] P Py thon n Expressões Fatias
  120. 120. Listas <ul><li>Coleções heterogêneas de objetos, que podem ser de qualquer tipo, inclusive outras listas
  121. 121. São mutáveis e aceitam operações de slices
  122. 122. Criando uma lista: </li><ul><li>x = [ ]
  123. 123. x = [ 1, 2, ”abc” ]
  124. 124. x = list() </li></ul><li>A função enumerate () é bastante útil para iterar sobre uma lista, retornando o index e o item </li></ul>
  125. 125. Listas
  126. 126. Listas
  127. 127. Tuplas <ul><li>Semelhantes as listas, porém são imutáveis: não se pode acrescentar, apagar ou fazer atribuições aos itens. São mais eficientes que as listas.
  128. 128. Criando uma tupla: </li><ul><li>x = ()
  129. 129. x = ( 1, 2, ”abc” )
  130. 130. x = (1,)
  131. 131. x = tuple()
  132. 132. x = tuple([ 1, 2, ”abc” ]) </li></ul></ul>
  133. 133. Dicionários <ul><li>Um dicionário é uma lista de associações compostas por uma chave única e estruturas correspondentes.
  134. 134. São mutáveis mas a chave precisa ser de um tipo imutável, geralmente são usadas strings, números ou tuplas.
  135. 135. Criando um dicionários: </li><ul><li>x = {}
  136. 136. x = {”chave1”:100, ”chave2”: [1,2,3]}
  137. 137. x = dict() </li></ul></ul>
  138. 138. Dicionários Chaves Fractal { 'Fractal' : 'IFS' , 'Palheta' : 'Verde' , 'Limites' : ( 640 , 480 ), ( 0 , 0 ): ( 42 , 35 )} Valores IFS Palheta Verde Limites (640, 480) (0, 0) (42, 35) Elementos imutáveis Objetos quaisquer
  139. 139. Dicionários
  140. 140. Tipos booleanos <ul><li>True e False são usados em Python para indicar verdadeiro ou falso
  141. 141. Os seguintes valores são considerados falsos: </li><ul><li>False (falso)
  142. 142. None (nulo)
  143. 143. 0 (zero)
  144. 144. ”” (string vazia), [] (lista vazia), () (tupla vazia), {} (dicionário vazio)
  145. 145. Outras estruturas com o tamanho igual a zero </li></ul><li>Todo o resto é considerado verdadeiro </li></ul>
  146. 146. Funções <ul><li>Funções são blocos de código identificados por um nome, que podem receber parâmetros pré-determinados.
  147. 147. No Python, as funções: </li><ul><li>Podem retornar ou não objetos
  148. 148. Aceitam Doc Strings
  149. 149. Aceitam parâmetros opcionais (com defaults)
  150. 150. Aceitam que os parâmetros sejam passados com nome. Neste caso, a ordem em que os parâmetros foram passados não importa
  151. 151. Tem namespace próprio (escopo local), e por isso podem ofuscar definições de escopo global </li></ul></ul>
  152. 152. Funções <ul><li>Bloco de função e exemplo com fatorial </li></ul>
  153. 153. Funções <ul><li>Exemplo com fatorial (recursivo) </li></ul>
  154. 154. Funções <ul><li>Conversões de RGB </li></ul>
  155. 155. Funções <ul><li>Outras comodidades: </li><ul><li>Número de parâmetros variáveis mas não nomeados
  156. 156. Número de parâmetros variáveis e nomeados </li></ul></ul>
  157. 157. Exercícios <ul><li>Implementar duas funções: </li></ul><ul><ul><li>Uma que converta temperatura em graus Celsius para Fahrenheit
  158. 158. Outra que converta temperatura em graus Fahrenheit para Celsius.
  159. 159. Lembrando que: F = (9/5)*C+32 </li></ul></ul><ul><li>Implementar uma função que retorne verdadeiro se o número for primo (falso caso contrário). Testar de 1 a 100.
  160. 160. Implementar uma função que receba uma lista de listas de comprimentos quaisquer e retorne uma lista de uma dimensão. </li></ul>
  161. 161. Exercícios <ul><li>Implementar uma função que receba um dicionário e retorne a soma, a média e a variância dos valores.
  162. 162. Escreva uma função que receba uma frase como parâmetro e retorne uma nova frase com cada palavra com as letras invertidas.
  163. 163. Crie uma função que receba uma lista de tuplas (dados), um inteiro (chave, zero por padrão igual) e um booleano (reverso, falso por padrão) e retorne dados ordenados pelo item indicado pela chave e em ordem decrescente se reverso for verdadeiro. </li></ul>

×