python para desenvolvedores - material apoio (parte i)
DESCRIPTION
Eu investi algum tempo fazendo um material de apoio para o livro Python para Desenvolvedores, do Luis Eduardo Borges. É um conjunto de slides para o capitulo I.TRANSCRIPT
- 1. Python para desenvolvedores Material de apoio Marcelo Barros de Almeida [email_address]
2. Licena http://creativecommons.org/licenses/by-nc-sa/2.5/br/
- Voc tem a liberdade de:
- Compartilhar copiar, distribuir e transmitir a obra.
3. Remixar criar obras derivadas Sob as seguintes condies:
- Atribuio Voc deve creditar a obra da forma especificada pelo autor ou licenciante (mas no de maneira que sugira que estes concedem qualquer aval a voc ou ao seu uso da obra).
4. Uso no-comercial Voc no pode usar esta obra para fins comerciais. 5. Compartilhamento pela mesma licena Se voc alterar, transformar ou criar em cima desta obra, voc poder distribuir a obra resultante apenas sob a mesma licena, ou sob uma licena similar presente. 6. Sumrio
- Parte I
- Caractersticas do Python
7. Blocos de cdigo, controle de fluxo e laos 8. Tipos e operadores 9. Listas, tuplas e dicionrios 10. Funes 11. Parte I Conceitos bsicos sobre a linguagem de programao Python, incluindo sintaxe, tipos, estruturas de controle, funes e documentao. 12. O que Python ? Python uma linguagem de altssimo nvel (em ingls, Very High Level Language) orientada a objeto, de tipagem dinmica e forte, interpretada e interativa. 13. Caractersticas do Python
- Sintaxe clara e concisa (legibilidade)
14. Suporte a estruturas de alto nvel 15. Grande nmero de mdulos 16. Multiparadigma: procedural, funcional e orientao a objetos 17. Moderna (geradores, introspeco, metaclasses, persistncia, unidades de teste, etc) 18. uma linguagem interpretada 19. Cdigo aberto 20. Fcil integrao com C/C++ 21. Histrico do Python
- Criada em 1990, por Guido van Rossum (Holanda)
22. Baseada na linguagem ABC 23. Foco inicial em fsicos e engenheiros 24. Bastante aceita atualmente:
25. Yahoo 26. Microsoft (IronPython) 27. Nokia (desenvolvimento para celulares) 28. Disney 29. Verses
- Python escrito originalmente em C (Cpython)
30. Existem verses para .NET (IronPython), JVM (Jython) e at mesmo em Python (PyPy) 31. Verses:
- 2.6.4: maior compatibilidade com a base atual
32. 3.1.1: verso com as mudanas mais recentes do Python 33. Download:
- http://www.python.org/download
34. Suporte a OS X, Linux, Unix, Windows 35. Executando um programa
- Arquivos com extenso .py. No Windows existe tambm .pyw, que no abre um console
36. Execuo geralmente pela linha de comando:
- pythonprogama.py
37. Tipagem dinmica (e forte)
- No se faz declarao de variveis. A varivel inferida pelo interpretador em tempo de execuo( duck typing )
38. Python fortemente tipada, isto , os tipos so checados no momento da operao e converses precisam ser explcitas 39. Compilao e interpretao
- O cdigo fonte traduzido embytecodese armazenado em disco para reuso posterior
40. Bytecode um formato binrio multiplataforma
- .pyc: byte code normal
41. .pyo: byte code otimizado O bytecode pode ser empacotado com o interpretador para distribuio de um executvel nico 42. Compilao e interpretao Cdigo fonte (.py) Smbolos rvore sinttica Bytecode (.pyc / .pyo) Binrios Instaladores Interpretador 43. Modo interativo
- O interpretador Python pode ser usado de forma interativa, na qual as linhas de cdigo so digitadas em uma linha de comando), bastando executar o interpretador (python)
44. O modo interativo muito prtico para testes e modificaes 45. Ferramentas
- IDEs:
- PyScripter
46. Stani's Python Editor (SPE) 47. Eric 48. PyDev (plugin para o Eclipse) Editores de texto:
- SciTE
49. Notepad++ 50. PSPad 51. Ferramentas
- Shell:
- PyCrust (grfico)
52. Ipython (texto) Empacotadores (criao de executveis):
- Py2exe (apenas para Windows)
53. cx_Freeze (portvel) 54. Ferramentas
- Frameworks:
- Web: Django, TurboGears, Zope e web2py
55. Interface grfica: wxPython, PyGTK e PyQt 56. Processamento cientifico: NumPy e SciPy 57. Processamento de imagens: PIL 58. 2D: Matplotlib e SVGFig 59. 3D: Visual Python, PyOpenGL e Python Ogre 60. Mapeamento objeto-relacional: SQLAlchemy e SQLObject 61. Cultura, jargo e curiosidades
- Nome proveniente de um programa da TV britnica chamadoMonty Python Flying Circus
62. Pythonic : usado para indicar que algo compatvel com as premissas de projeto 63. Ideais da linguagem, por Tim Peters:
- import this
Benevolent Dictator for Life(BDFL) como Guido conhecido na comunidade Python 64. Propostas para melhoria da linguagem so chamadas de PEPs ( Python Enhancement Proposals ) 65. Sintaxe
- Comentrios comeam com # e vo at o fim da linha
66. Existem tambm comentrios funcionais para:
- Indicao do interpretador
67. Indicao da codificao do arquivo Programa constitudo de linhas. Mltiplas linhas devem usar o ao final da linha 68. Blocos de cdigo
- Os blocos so delimitados pela endentao, que deve ser constante no bloco
69. PEP-0008: usar quatro espaos para endentao 70. A linha anterior ao bloco termina com :, geralmente uma estrutura de controle ou declarao de uma nova estrutura 71. No misture espaos e tabulao ! 72. Blocos de cdigo Programa Instrues Enquanto condio: Dois pontos obrigatrios Se condio: Instrues Seno: Instrues Instrues Inicio de um bloco Fim dos dois blocos Outro bloco Fim do programa Instrues Inicio do programa 73. Blocos de cdigo
- Exemplo:
- Sada:
- O operador % calcula o mdulo da diviso
74. Objetos
- Python orientado a objetos. At mesmo os tipos bsicos so objetos
75. O acesso a atributos e mtodos feito via o operador ponto (.) 76. Controle de fluxo (if-else)
- : sentena que possa ser avaliada como verdadeira ou falsa
77. : sequncia de linhas de comando 78. As clausulas elif e else so opcionais e podem existir vrios elifs para o mesmo if, porm apenas um else ao final 79. Parnteses s so necessrios para evitar ambiguidades 80. Controle de fluxo (if-else)
- Exemplo:
81. Laos (for)
- Permite iterar sobre sequncias estticas ou iteradores
82. Aceita instruesbreakecontinue , alm deelse 83. range(m,n,p) ou xrange(m,n,p) so teis 84. Laos (for)
- O for itera sobre objetos e no indexes !
Lista xaponta para 1. 1 2 3 4 5 6 ... x Primeira iterao A referncia foi atualizada. Lista 1 2 3 4 5 6 ... x Segunda iterao x apenas uma referncia. xaponta para 2. 85. Laos (while)
- Aceita instruesbreakecontinue , alm deelse
86. Lembre de usarTrueeFalseno teste 87. Tipos
- Tipos simples:
- Nmeros (inteiro, real, complexo) e strings
Tipos complexos:
- Listas, tuplas e dicionrios
Os tipos podem ser:
- Mutveis: permite alterao no contedo
88. Imutveis: no permitem alterao no contedo (uma cpia sempre feita em caso de alterao) Python usa referncias 89. Python usa coletor de lixo por contagem de referncia 90. Tipos nuericos
- Os tipos inteiros tem dimenso arbitrria e so imutveis
91. Notao cientfica: 1.2e22 92. Funes builtin de converso:
- int(), float(), abs(), oct(), hex(), pow(), round()
Suporta vrios tipos de operaes:
- Aritmticas: +, -, *, **, /, //, %
93. Lgicas: , =, ==, != 94. Bit-a-bit: , &, |, ^, ~ 95. Tipos numricos 96. Tipos string
- Os tipos string so imutveis e podem ser inicializadas com:
- Aspas simples ou duplas
97. Em vrias linhas com trs aspas simples ou duplas 98. Sem expanso de caracteres especiais se comear com r 99. Unicode, se comelar com u Funes builtin de converso:
- str(), unicode(), len()
O mdulo UserString suporta strings mutveis 100. Operadores booleanos
- Com operadores lgicos possvel construir condies mais complexas para controlar desvios condicionais e laos.
101. Os operadores booleanos:and ,or ,not ,isein :
- is: retorna verdadeiro se receber duas referncias ao mesmo objeto e falso em caso contrrio
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 contrrio. 103. and, or e not so os equivalentes a &&, || e ! do C 104. Tipos string 105. Interpolao de strings
- Feita atravs do operador %, similar ao printf da linguagem C
106. Smbolos usados na interpolao:
- %s: string
107. %d: inteiro 108. %o: octal 109. %x: hexacimal 110. %f: real 111. %e: real exponencial 112. %%: sinal de percentagem 113. Interpolao de strings 114. Fatiando strings (slices)
- O uso de conchetes e indexes permite o fatiamento das strings de forma bem flexvel
115. Os ndices no Python:
- Comeam em zero
116. Contam a partir do fim se forem negativos 117. Podem ser definidos como trechos, na forma [inicio:fim+1:intervalo]
- Inicio: default 0, fim: default len(str) e intervalo: default 1
118. Invertendo uma string: [::-1] Existem vrias funes teis no mdulo string 119. Fatiando strings (slices) Fatiando strings String s P y t h o n 0 1 2 3 4 5 s[0] Caracteres Posies s[:2] s[2:] s[-1] P Py thon n Expresses Fatias 120. Listas
- Colees heterogneas de objetos, que podem ser de qualquer tipo, inclusive outras listas
121. So mutveis e aceitam operaes de slices 122. Criando uma lista:
- x = [ ]
123. x = [ 1, 2, abc ] 124. x = list() A funoenumerate () bastante til para iterar sobre uma lista, retornando o index e o item 125. Listas 126. Listas 127. Tuplas
- Semelhantes as listas, porm so imutveis: no se pode acrescentar, apagar ou fazer atribuies aos itens. So mais eficientes que as listas.
128. Criando uma tupla:
- x = ()
129. x = ( 1, 2, abc ) 130. x = (1,) 131. x = tuple() 132. x = tuple([ 1, 2, abc ]) 133. Dicionrios
- Um dicionrio uma lista de associaes compostas por uma chave nica e estruturas correspondentes.
134. So mutveis mas a chave precisa ser de um tipo imutvel, geralmente so usadas strings, nmeros ou tuplas. 135. Criando um dicionrios:
- x = {}
136. x = {chave1:100, chave2: [1,2,3]} 137. x = dict() 138. Dicionrios 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 imutveis Objetos quaisquer 139. Dicionrios 140. Tipos booleanos
- True e False so usados em Python para indicar verdadeiro ou falso
141. Os seguintes valores so considerados falsos:
- False (falso)
142. None (nulo) 143. 0 (zero) 144. (string vazia), [] (lista vazia), () (tupla vazia), {} (dicionrio vazio) 145. Outras estruturas com o tamanho igual a zero Todo o resto considerado verdadeiro 146. Funes
- Funes so blocos de cdigo identificados por um nome, que podem receber parmetros pr-determinados.
147. No Python, as funes:
- Podem retornar ou no objetos
148. Aceitam Doc Strings 149. Aceitam parmetros opcionais (com defaults) 150. Aceitam que os parmetros sejam passados com nome. Neste caso, a ordem em que os parmetros foram passados no importa 151. Tem namespace prprio (escopo local), e por isso podem ofuscar definies de escopo global 152. Funes
- Bloco de funo e exemplo com fatorial
153. Funes
- Exemplo com fatorial (recursivo)
154. Funes
- Converses de RGB
155. Funes
- Outras comodidades:
- Nmero de parmetros variveis mas no nomeados
156. Nmero de parmetros variveis e nomeados 157. Exerccios
- Implementar duas funes:
-
- Uma que converta temperatura em graus Celsius para Fahrenheit
- 158. Outra que converta temperatura em graus Fahrenheit para Celsius.
159. Lembrando que: F = (9/5)*C+32
- Implementar uma funo que retorne verdadeiro se o nmero for primo (falso caso contrrio). Testar de 1 a 100.
160. Implementar uma funo que receba uma lista de listas de comprimentos quaisquer e retorne uma lista de uma dimenso. 161. Exerccios
- Implementar uma funo que receba um dicionrio e retorne a soma, a mdia e a varincia dos valores.
162. Escreva uma funo que receba uma frase como parmetro e retorne uma nova frase com cada palavra com as letras invertidas. 163. Crie uma funo que receba uma lista de tuplas (dados), um inteiro (chave, zero por padro igual) e um booleano (reverso, falso por padro) e retorne dados ordenados pelo item indicado pela chave e em ordem decrescente se reverso for verdadeiro.