Python para desenvolvedores - material apoio (parte I)

Embed Size (px)

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.

Citation preview

  • 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:

  • Google

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.