Mini curso Python Cuiabá/MT, 07/10/2010 Armando Roque Ferreira Pinto Analista de sistemas
Agenda <ul><li>Introdução
Conceito
Instalação
Interpretador
IDEs (Integrated Development Enviroment - Ambiente de desenolvimento integrado)
PEPs (Python Enhanced Proposals)
Módulos
Baterias
Cuidados pra não enroscar...
Tipos nativos
Operadores
Sintaxe
Estrutura de controle (fluxo e laço)
Prática... </li></ul>
Introdução <ul><li>História </li><ul><li>Início na Universidade de Amsterdam;
CWI - Instituto de matemática e ciência da computação;
Produção independente, sem patrocinio;
Iniciou através da motivação do Amoeba e ABC; </li></ul><li>Criador </li><ul><li>Guido van Rossum (GvR)
Mestre em matemática e ciência da computação;
Ditador Benevolente Vitalício
Atualmente no Google desde 2005
O nome provêm de Monty Python’s Flying Circus; </li></ul></ul>
Introdução <ul><li>Propósito </li><ul><li>As linguagens da época não motivou GvR a modificar para atender as necessidades;
Criar uma linguagem fácil e intuitiva mantendo o poder perante as existentes;
Adequada as tarefas diárias com ciclo de desenvolvimento curto; </li></ul><li>Quem manda? </li><ul><li>PSF - Não é o Progr...
Python Software Foundation </li></ul></ul>
Introdução <ul><li>Missão </li><ul><li>The mission of the Python Software Foundation is to promote, protect, and advance t...
A missão da PSF é promover, proteger e avançar a linguagem de programação Python, suportar, facilitar o crescimento de uma...
Conceito <ul><li>Alto Nível, simplicidade, objetividade e clareza </li><ul><li>ZenPython, por Tim Peters
# import this </li></ul><li>Interpretada ou compilada? </li><ul><li>Interpretada na console
Ferramentas auxiliares para compilar - não é nativo </li><ul><li>Windows
PyCompile
py2exe
Upcoming SlideShare
Loading in...5
×

Mini Curso Python

2,242

Published on

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

No Downloads
Views
Total Views
2,242
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
114
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Mini Curso Python

  1. 1. Mini curso Python Cuiabá/MT, 07/10/2010 Armando Roque Ferreira Pinto Analista de sistemas
  2. 2. Agenda <ul><li>Introdução
  3. 3. Conceito
  4. 4. Instalação
  5. 5. Interpretador
  6. 6. IDEs (Integrated Development Enviroment - Ambiente de desenolvimento integrado)
  7. 7. PEPs (Python Enhanced Proposals)
  8. 8. Módulos
  9. 9. Baterias
  10. 10. Cuidados pra não enroscar...
  11. 11. Tipos nativos
  12. 12. Operadores
  13. 13. Sintaxe
  14. 14. Estrutura de controle (fluxo e laço)
  15. 15. Prática... </li></ul>
  16. 16. Introdução <ul><li>História </li><ul><li>Início na Universidade de Amsterdam;
  17. 17. CWI - Instituto de matemática e ciência da computação;
  18. 18. Produção independente, sem patrocinio;
  19. 19. Iniciou através da motivação do Amoeba e ABC; </li></ul><li>Criador </li><ul><li>Guido van Rossum (GvR)
  20. 20. Mestre em matemática e ciência da computação;
  21. 21. Ditador Benevolente Vitalício
  22. 22. Atualmente no Google desde 2005
  23. 23. O nome provêm de Monty Python’s Flying Circus; </li></ul></ul>
  24. 24. Introdução <ul><li>Propósito </li><ul><li>As linguagens da época não motivou GvR a modificar para atender as necessidades;
  25. 25. Criar uma linguagem fácil e intuitiva mantendo o poder perante as existentes;
  26. 26. Adequada as tarefas diárias com ciclo de desenvolvimento curto; </li></ul><li>Quem manda? </li><ul><li>PSF - Não é o Programa Saúde da Família do Governo Federal Brasileiro!!!
  27. 27. Python Software Foundation </li></ul></ul>
  28. 28. Introdução <ul><li>Missão </li><ul><li>The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.
  29. 29. A missão da PSF é promover, proteger e avançar a linguagem de programação Python, suportar, facilitar o crescimento de uma comunidade internacional diversificada de programadores Python. (Tradução livre) </li></ul></ul>
  30. 30. Conceito <ul><li>Alto Nível, simplicidade, objetividade e clareza </li><ul><li>ZenPython, por Tim Peters
  31. 31. # import this </li></ul><li>Interpretada ou compilada? </li><ul><li>Interpretada na console
  32. 32. Ferramentas auxiliares para compilar - não é nativo </li><ul><li>Windows
  33. 33. PyCompile
  34. 34. py2exe
  35. 35. Vantagem: velocidade;
  36. 36. Desvantagem: embute todo o Python no binário; </li></ul></ul><li>E o .pyc? </li><ul><li>O interpretador após fazer as verificações compila com CPython gerando o arquivo .pyc para otimizar o carregamento e melhorar o desempenho;
  37. 37. Este arquivo contém byte codes gerados a partir do arquivo .py; </li></ul></ul>
  38. 38. Instalação <ul><li>Windows </li><ul><li>Executar o binário (http://www.python.org/download/) </li></ul><li>Linux </li><ul><li>A excessão em Linux é não ter Python instalado
  39. 39. Instalando no:
  40. 40. Opensuse </li><ul><li>zypper install python </li></ul><li>Ubuntu </li><ul><li>apt-get install python </li></ul></ul><li>outros sabores </li><ul><li>MacOS </li></ul><li>Portáteis </li><ul><li>Celulares, handhelds </li></ul></ul>
  41. 41. Console e IDE's <ul><li>Interpretador </li><ul><li>Linux </li><ul><li>Console </li><ul><li># python
  42. 42. Executando um .py
  43. 43. # python helloworld.py </li></ul></ul></ul><li>IDEs e editores </li><ul><li>Netbeans
  44. 44. Eclipse
  45. 45. Eric4
  46. 46. Komodo-Edit
  47. 47. Vim, Joe, Pico
  48. 48. Notepad (bloco de notas) </li></ul></ul>
  49. 49. PEP's <ul><li>Python Enhancement Proposals (http://www.python.org/dev/peps/)
  50. 50. PEP 8 - Guia de estilo </li><ul><li>Indentação com 4 espaços por nível;
  51. 51. Tabs ou espaços? Nunca misturar;
  52. 52. Priorizar espaços;
  53. 53. O Tab fica em segundo plano;
  54. 54. Tamanho máximo de todas as linhas é de 79 caracteres;
  55. 55. Quebrar as linhas com mais de 80 caracteres com caracter &quot;&quot;;
  56. 56. Linhas em branco
  57. 57. Separar funções e classes com duas linhas em branco;
  58. 58. Definições de métodos em uma classe é separado por uma linha em branco; </li></ul></ul>
  59. 59. Módulos (baterias) <ul><li>Banco de dados: ODBC, MySQL, PostgreSQL, Oracle, MSSQLServer, sqlite entre outros;
  60. 60. Rede: HTML, FTP, URL, POP, SMTP, Sockets, CORBA, telnet;
  61. 61. Ciência: SciPy, BioPython, NumPy, MatPlotLib
  62. 62. Processamento de imagens: PIL (Python Image Library), Pythonmagick, Gimp-python;
  63. 63. XML: PyXML, 4Suite, ElementTree;
  64. 64. Computação Gráfica: PyOpenGL, PyGame, PyMedia; </li></ul>
  65. 65. Cuidados pra não enroscar... <ul><li>Sistema operacional
  66. 66. Versão do Interpretador
  67. 67. * Disponibilidade do módulo *
  68. 68. Palavras chaves (keywords) </li><ul><li>and del from not while
  69. 69. as elif global or with
  70. 70. assert else if pass yield
  71. 71. break except import print
  72. 72. class exec in raise
  73. 73. continue finally is return
  74. 74. def for lambda try </li></ul></ul>
  75. 75. Tipos nativos <ul><li>Tipos nativos </li><ul><li>int, float, long, boolean, strings, listas, dicionários e tuplas </li></ul><li>Variáveis são case sensitive, diferenciam maiúsculas de minúsculas; </li><ul><li>>>> a = 0
  76. 76. >>> type(a)
  77. 77. <type 'int'>
  78. 78. >>> b = 0.0
  79. 79. >>> c = 'Python'
  80. 80. >>> d = [1,2,3]
  81. 81. >>> type(d)
  82. 82. <type 'list'> </li></ul></ul>
  83. 83. Tipos nativos <ul><li>>>> e = ['Linux 2.4', 'Linux 2.6', 'Windows XP', 'Windows 7']
  84. 84. >>> f = {'fruta' : 'maça', 'verdura' : 'couve', 'folha' : 'alface'}
  85. 85. >>> type(f)
  86. 86. <type 'dict'>
  87. 87. >>> print f
  88. 88. {'fruta': 'maxe7a', 'verdura': 'couve', 'folha': 'alface'}
  89. 89. >>> print f['fruta']
  90. 90. maça
  91. 91. >>> verd = True
  92. 92. >>> type(verd)
  93. 93. <type 'bool'> </li></ul>
  94. 94. Tipos nativos <ul><li>Tupla não aceita modificação </li><ul><li>>>> tupla = (1,2,3)
  95. 95. >>> type(tupla)
  96. 96. <type 'tuple'>
  97. 97. >>> tupla[0] = 3
  98. 98. Traceback (most recent call last):
  99. 99. File &quot;<pyshell#54>&quot;, line 1, in <module>
  100. 100. tupla[0] = 3
  101. 101. TypeError: 'tuple' object does not support item assignment </li></ul><li>Mas aceita concatenação </li><ul><li>tupla2 = (4,5,6)
  102. 102. tupla3 = tupla + tupla2
  103. 103. >>> (1, 2, 3, 4, 5, 6) </li></ul></ul>
  104. 104. Tipos nativos <ul><li>Tipagem em Python é dinâmica e forte;
  105. 105. Variável assume o tipo qdo associada com o valor;
  106. 106. Toda variável é uma referência; </li><ul><li>>>> a = &quot;1&quot;
  107. 107. >>> b = 1
  108. 108. >>> a + b
  109. 109. Traceback (most recent call last):
  110. 110. File &quot;<pyshell#48>&quot;, line 1, in <module>
  111. 111. a + b
  112. 112. TypeError: cannot concatenate 'str' and 'int' objects
  113. 113. >>> type(a)
  114. 114. <type 'str'>
  115. 115. >>> type(b)
  116. 116. <type 'int'> </li></ul></ul>
  117. 117. Operadores Aritméticos Comparação Lógicos Atribuição + == and = - != and += * > not -= / < /= >= *= <= in is
  118. 118. Sintaxe <ul><li>Sintaxe </li><ul><li>x = 1
  119. 119. y = 2
  120. 120. if x > y: </li><ul><li>a = 3 </li></ul><li>else: </li><ul><li>a = 0 </li></ul></ul><li>O bloco de instruções é definido pela indentação
  121. 121. Interessante: </li><ul><li>>>> a=b=c=d=2
  122. 122. >>> print a,b,c,d
  123. 123. 2 2 2 2 </li></ul></ul>
  124. 124. Estrutura de controle (Controle de fluxo) <ul><li>if verdadeiro: </li><ul><li>faça isso </li></ul><li>elif: </li><ul><li>outro isso </li></ul><li>else: </li><ul><li>faça aquilo </li></ul></ul>* Não existe switch/case
  125. 125. Prática <ul><li>Lembra-se do Zen Python? </li><ul><li># import this </li></ul></ul>
  126. 126. Prática <ul><li>Encondings (PEP 263) </li><ul><li>Declaração da codificação
  127. 127. Padrão é ASCII caso não seja explicito </li><ul><li># coding='UTF8' </li></ul><li>ou </li><ul><li># -*- coding: UTF8 -*- </li></ul><li>Obrigatório o caracter &quot;#&quot; no início da linha </li></ul></ul>
  128. 128. Prática <ul><li>Estrutura de um arquivo .py
  129. 129. #!/bin/python
  130. 130. # coding='UTF8'
  131. 131. &quot;&quot;&quot;
  132. 132. String de documentação
  133. 133. &quot;&quot;&quot; </li></ul>
  134. 134. Prática <ul><li>Help </li><ul><li>help()
  135. 135. modules
  136. 136. >>> import md5 (deprecated)
  137. 137. >>> import hashlib
  138. 138. >>> hashlib.sha512(&quot;Python&quot;).hexdigest()
  139. 139. 'fd9d4d5b7a8a8fae6b1bc099b799110f7e4338606e2610f5d9506a4346e..'
  140. 140. ou
  141. 141. >>> var = hashlib.new('sha1')
  142. 142. >>> var.update('Python')
  143. 143. >>> var.hexdigest()
  144. 144. '6e3604888c4b4ec08e2837913d012fe2834ffa83' </li></ul></ul>
  145. 145. Excessões (Exceptions) <ul><li>>>> vetor4Posicoes = [1,2,3,4]
  146. 146. >>> print vetor4Posicoes[5]
  147. 147. Traceback (most recent call last):
  148. 148. File &quot;<pyshell#12>&quot;, line 1, in <module>
  149. 149. print vetor4Posicoes[5]
  150. 150. IndexError: list index out of range
  151. 151. Tratamento
  152. 152. >>> try: </li><ul><li>print vetor4Posicoes[5] </li></ul><li>except: </li><ul><li>print &quot;Posicao do vetor nao encontrado&quot; </li></ul><li>Posicao do vetor nao encontrado </li></ul>
  153. 153. Funções (Functions) <ul><li>Blocos de código com nome, que recebem parâmetros e retornam um valor;
  154. 154. Sintaxe:
  155. 155. def funcao(arg1, arg2, argN): </li><ul><li># Procedimentos </li></ul><li>return valor
  156. 156. Chamada:
  157. 157. variavel = funcao(1,2,3) </li></ul>
  158. 158. Interagindo com banco de dados (SQLite) <ul><li>import sqlite3
  159. 159. # DBAPI - Database Application Programming Interface
  160. 160. conn = sqlite3.connect('/temp/bdpython.sqlite')
  161. 161. # Definição da conexão conn
  162. 162. c = conn.cursor()
  163. 163. # Objeto &quot;cursor&quot; através da conexão &quot;conn&quot;
  164. 164. c.execute('''create table python (id int, data text, descricao text, valor real)''')
  165. 165. c.execute('''insert into python values (1, '2010-01-10', 'Meu primeiro registro', 10000)''')
  166. 166. conn.commit()
  167. 167. c.execute('''select * from python''')
  168. 168. for row in c:
  169. 169. print row
  170. 170. (1, u'2010-01-10', u'Meu primeiro registro', 10000.0)
  171. 171. c.close() </li></ul>
  172. 172. Log <ul><li>#!/usr/bin/python
  173. 173. import logging
  174. 174. import logging.handlers
  175. 175. def configure_logger(log_file): </li><ul><li>&quot;&quot;&quot;Accepts a fully-qualified filename to the log file.
  176. 176. Logs at DEBUG to file and at WARNING to stdout.
  177. 177. Returns a fully-configured logger object.
  178. 178. &quot;&quot;&quot;
  179. 179. logger = logging.getLogger('ProgramName')
  180. 180. log_formatter = logging.Formatter(
  181. 181. '%(created)-13s %(asctime)s Pid:%(process)s %(levelname)s %(message)s Thread:%(thread)s Thread Name:%(threadName)s Name:%(name)s File:%(filename)s Module: %(module)s Function Name:%(funcName)s') </li></ul></ul>
  182. 182. Log <ul><li>file_handler = logging.FileHandler(log_file)
  183. 183. file_handler.setFormatter(log_formatter)
  184. 184. file_handler.setLevel(logging.DEBUG)
  185. 185. file_handler = logging.handlers.RotatingFileHandler(log_file, maxBytes=500, backupCount=5)
  186. 186. logger.setLevel(logging.DEBUG)
  187. 187. logger.addHandler(file_handler)
  188. 188. return logger
  189. 189. if __name__ == &quot;__main__&quot;: </li><ul><li>LOG = configure_logger('logfile.txt')
  190. 190. LOG.debug('This is debug level')
  191. 191. LOG.info('This is info level')
  192. 192. LOG.warning('This is warning level')
  193. 193. LOG.error('This is error level')
  194. 194. LOG.critical('This is critical level') </li></ul></ul>
  195. 195. Frameworks <ul><li>Desktop </li><ul><li>PyHed
  196. 196. Dabo </li></ul><li>Web </li><ul><li>Zope/Plone
  197. 197. Django
  198. 198. Pylons
  199. 199. Turbogears
  200. 200. Web2Py </li></ul></ul>
  201. 201. Conclusão <ul><li>Python não é a solução para todos os problemas;
  202. 202. (Não use um martelo para fixar um parafuso) </li></ul>
  203. 203. Perguntas ou dúvidas ?
  204. 204. Obrigado pela sua participação <ul><li>Contato: </li><ul><li>[email_address]
  205. 205. http://dropsdef.blogspot.com </li></ul></ul>
  206. 206. Bebendo direto da fonte... <ul><li>Bebendo direto na fonte:
  207. 207. http://www.python.org
  208. 208. http://www.python.org/psf/
  209. 209. http://www.python.org/~guido/
  210. 210. http://www.python.org/about/
  211. 211. http://www.python.org/about/success/
  212. 212. http://www.python.org/about/gettingstarted/
  213. 213. http://www.python.org.br/wiki/DocumentacaoPython#Artigos_e_Tutoriais
  214. 214. http://www.python.org.br/wiki/SoftwarePython#Scripts
  215. 215. http://www.python.org.br/wiki/CookBook
  216. 216. http://www.python.org.br/wiki/IdesPython
  217. 217. http://pt.wikipedia.org/wiki/Guido_van_Rossum </li></ul>
  218. 218. Recomendações <ul><li>http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=Aprenda_a_Programar-Luciano_Ramalho.pdf
  219. 219. http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=aula-01.pdf
  220. 220. http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=mergulhando.pdf (parcial) </li></ul>
  221. 221. Outras fontes... <ul><li>http://www.python.org.br/wiki/DocumentacaoPython#Artigos_e_Tutoriais </li><ul><li>Artigos e tutoriais da Python.org.BR </li></ul><li>http://www.async.com.br/projects/python/pnp.pdf </li><ul><li>Curso de introdução ao Python </li></ul><li>http://docs.python.org/library/sqlite3.html </li><ul><li>Interação Python SQLite3 </li></ul><li>http://effbot.org/zone/python-compile.htm </li><ul><li>Compilação CPython .PYC </li></ul><li>http://ark4n.wordpress.com/2009/05/25/pyctoria-5-o-zen-do-python/ </li><ul><li>Completo </li></ul><li>http://www.slideshare.net/franciscosouza/minicurso-de-python </li><ul><li>Desde introdução até OO, estrutura de dados; </li></ul><li>http://www.paradigma.com.br/Plone/cursoPython.pdf
  222. 222. http://www.slideshare.net/asergionogueira/a-linguagem-python </li><ul><li>Ótimo conceito sobre estrutura de dados; </li></ul><li>http://www.slideshare.net/flavioribeiro/introduo-a-linguagem-de-programao-python-presentation </li><ul><li>Diferença entre versão 2.x e 3.0 </li></ul><li>www.visual.pro.br/py/pdf/gama.pdf </li><ul><li>Baterias </li></ul><li>http://www.slideshare.net/aldaba/python-mini-curso-v0812-presentation </li><ul><li>Baterias </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×