• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Mini Curso Python
 

Mini Curso Python

on

  • 2,304 views

 

Statistics

Views

Total Views
2,304
Views on SlideShare
2,304
Embed Views
0

Actions

Likes
1
Downloads
95
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Mini Curso Python Mini Curso Python Presentation Transcript

    • Mini curso Python Cuiabá/MT, 07/10/2010 Armando Roque Ferreira Pinto Analista de sistemas
    • Agenda
      • 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...
    • Introdução
      • História
        • 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;
      • Criador
        • 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;
    • Introdução
      • Propósito
        • 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;
      • Quem manda?
        • PSF - Não é o Programa Saúde da Família do Governo Federal Brasileiro!!!
        • Python Software Foundation
    • Introdução
      • Missão
        • 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.
        • 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)
    • Conceito
      • Alto Nível, simplicidade, objetividade e clareza
        • ZenPython, por Tim Peters
        • # import this
      • Interpretada ou compilada?
        • Interpretada na console
        • Ferramentas auxiliares para compilar - não é nativo
          • Windows
          • PyCompile
          • py2exe
          • Vantagem: velocidade;
          • Desvantagem: embute todo o Python no binário;
      • E o .pyc?
        • O interpretador após fazer as verificações compila com CPython gerando o arquivo .pyc para otimizar o carregamento e melhorar o desempenho;
        • Este arquivo contém byte codes gerados a partir do arquivo .py;
    • Instalação
      • Windows
        • Executar o binário (http://www.python.org/download/)
      • Linux
        • A excessão em Linux é não ter Python instalado
        • Instalando no:
        • Opensuse
          • zypper install python
        • Ubuntu
          • apt-get install python
      • outros sabores
        • MacOS
      • Portáteis
        • Celulares, handhelds
    • Console e IDE's
      • Interpretador
        • Linux
          • Console
            • # python
            • Executando um .py
            • # python helloworld.py
      • IDEs e editores
        • Netbeans
        • Eclipse
        • Eric4
        • Komodo-Edit
        • Vim, Joe, Pico
        • Notepad (bloco de notas)
    • PEP's
      • Python Enhancement Proposals (http://www.python.org/dev/peps/)
      • PEP 8 - Guia de estilo
        • Indentação com 4 espaços por nível;
        • Tabs ou espaços? Nunca misturar;
        • Priorizar espaços;
        • O Tab fica em segundo plano;
        • Tamanho máximo de todas as linhas é de 79 caracteres;
        • Quebrar as linhas com mais de 80 caracteres com caracter "";
        • Linhas em branco
        • Separar funções e classes com duas linhas em branco;
        • Definições de métodos em uma classe é separado por uma linha em branco;
    • Módulos (baterias)
      • Banco de dados: ODBC, MySQL, PostgreSQL, Oracle, MSSQLServer, sqlite entre outros;
      • Rede: HTML, FTP, URL, POP, SMTP, Sockets, CORBA, telnet;
      • Ciência: SciPy, BioPython, NumPy, MatPlotLib
      • Processamento de imagens: PIL (Python Image Library), Pythonmagick, Gimp-python;
      • XML: PyXML, 4Suite, ElementTree;
      • Computação Gráfica: PyOpenGL, PyGame, PyMedia;
    • Cuidados pra não enroscar...
      • Sistema operacional
      • Versão do Interpretador
      • * Disponibilidade do módulo *
      • Palavras chaves (keywords)
        • and del from not while
        • as elif global or with
        • assert else if pass yield
        • break except import print
        • class exec in raise
        • continue finally is return
        • def for lambda try
    • Tipos nativos
      • Tipos nativos
        • int, float, long, boolean, strings, listas, dicionários e tuplas
      • Variáveis são case sensitive, diferenciam maiúsculas de minúsculas;
        • >>> a = 0
        • >>> type(a)
        • <type 'int'>
        • >>> b = 0.0
        • >>> c = 'Python'
        • >>> d = [1,2,3]
        • >>> type(d)
        • <type 'list'>
    • Tipos nativos
      • >>> e = ['Linux 2.4', 'Linux 2.6', 'Windows XP', 'Windows 7']
      • >>> f = {'fruta' : 'maça', 'verdura' : 'couve', 'folha' : 'alface'}
      • >>> type(f)
      • <type 'dict'>
      • >>> print f
      • {'fruta': 'maxe7a', 'verdura': 'couve', 'folha': 'alface'}
      • >>> print f['fruta']
      • maça
      • >>> verd = True
      • >>> type(verd)
      • <type 'bool'>
    • Tipos nativos
      • Tupla não aceita modificação
        • >>> tupla = (1,2,3)
        • >>> type(tupla)
        • <type 'tuple'>
        • >>> tupla[0] = 3
        • Traceback (most recent call last):
        • File &quot;<pyshell#54>&quot;, line 1, in <module>
        • tupla[0] = 3
        • TypeError: 'tuple' object does not support item assignment
      • Mas aceita concatenação
        • tupla2 = (4,5,6)
        • tupla3 = tupla + tupla2
        • >>> (1, 2, 3, 4, 5, 6)
    • Tipos nativos
      • Tipagem em Python é dinâmica e forte;
      • Variável assume o tipo qdo associada com o valor;
      • Toda variável é uma referência;
        • >>> a = &quot;1&quot;
        • >>> b = 1
        • >>> a + b
        • Traceback (most recent call last):
        • File &quot;<pyshell#48>&quot;, line 1, in <module>
        • a + b
        • TypeError: cannot concatenate 'str' and 'int' objects
        • >>> type(a)
        • <type 'str'>
        • >>> type(b)
        • <type 'int'>
    • Operadores Aritméticos Comparação Lógicos Atribuição + == and = - != and += * > not -= / < /= >= *= <= in is
    • Sintaxe
      • Sintaxe
        • x = 1
        • y = 2
        • if x > y:
          • a = 3
        • else:
          • a = 0
      • O bloco de instruções é definido pela indentação
      • Interessante:
        • >>> a=b=c=d=2
        • >>> print a,b,c,d
        • 2 2 2 2
    • Estrutura de controle (Controle de fluxo)
      • if verdadeiro:
        • faça isso
      • elif:
        • outro isso
      • else:
        • faça aquilo
      * Não existe switch/case
    • Prática
      • Lembra-se do Zen Python?
        • # import this
    • Prática
      • Encondings (PEP 263)
        • Declaração da codificação
        • Padrão é ASCII caso não seja explicito
          • # coding='UTF8'
        • ou
          • # -*- coding: UTF8 -*-
        • Obrigatório o caracter &quot;#&quot; no início da linha
    • Prática
      • Estrutura de um arquivo .py
      • #!/bin/python
      • # coding='UTF8'
      • &quot;&quot;&quot;
      • String de documentação
      • &quot;&quot;&quot;
    • Prática
      • Help
        • help()
        • modules
        • >>> import md5 (deprecated)
        • >>> import hashlib
        • >>> hashlib.sha512(&quot;Python&quot;).hexdigest()
        • 'fd9d4d5b7a8a8fae6b1bc099b799110f7e4338606e2610f5d9506a4346e..'
        • ou
        • >>> var = hashlib.new('sha1')
        • >>> var.update('Python')
        • >>> var.hexdigest()
        • '6e3604888c4b4ec08e2837913d012fe2834ffa83'
    • Excessões (Exceptions)
      • >>> vetor4Posicoes = [1,2,3,4]
      • >>> print vetor4Posicoes[5]
      • Traceback (most recent call last):
      • File &quot;<pyshell#12>&quot;, line 1, in <module>
      • print vetor4Posicoes[5]
      • IndexError: list index out of range
      • Tratamento
      • >>> try:
        • print vetor4Posicoes[5]
      • except:
        • print &quot;Posicao do vetor nao encontrado&quot;
      • Posicao do vetor nao encontrado
    • Funções (Functions)
      • Blocos de código com nome, que recebem parâmetros e retornam um valor;
      • Sintaxe:
      • def funcao(arg1, arg2, argN):
        • # Procedimentos
      • return valor
      • Chamada:
      • variavel = funcao(1,2,3)
    • Interagindo com banco de dados (SQLite)
      • import sqlite3
      • # DBAPI - Database Application Programming Interface
      • conn = sqlite3.connect('/temp/bdpython.sqlite')
      • # Definição da conexão conn
      • c = conn.cursor()
      • # Objeto &quot;cursor&quot; através da conexão &quot;conn&quot;
      • c.execute('''create table python (id int, data text, descricao text, valor real)''')
      • c.execute('''insert into python values (1, '2010-01-10', 'Meu primeiro registro', 10000)''')
      • conn.commit()
      • c.execute('''select * from python''')
      • for row in c:
      • print row
      • (1, u'2010-01-10', u'Meu primeiro registro', 10000.0)
      • c.close()
    • Log
      • #!/usr/bin/python
      • import logging
      • import logging.handlers
      • def configure_logger(log_file):
        • &quot;&quot;&quot;Accepts a fully-qualified filename to the log file.
        • Logs at DEBUG to file and at WARNING to stdout.
        • Returns a fully-configured logger object.
        • &quot;&quot;&quot;
        • logger = logging.getLogger('ProgramName')
        • log_formatter = logging.Formatter(
        • '%(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')
    • Log
      • file_handler = logging.FileHandler(log_file)
      • file_handler.setFormatter(log_formatter)
      • file_handler.setLevel(logging.DEBUG)
      • file_handler = logging.handlers.RotatingFileHandler(log_file, maxBytes=500, backupCount=5)
      • logger.setLevel(logging.DEBUG)
      • logger.addHandler(file_handler)
      • return logger
      • if __name__ == &quot;__main__&quot;:
        • LOG = configure_logger('logfile.txt')
        • LOG.debug('This is debug level')
        • LOG.info('This is info level')
        • LOG.warning('This is warning level')
        • LOG.error('This is error level')
        • LOG.critical('This is critical level')
    • Frameworks
      • Desktop
        • PyHed
        • Dabo
      • Web
        • Zope/Plone
        • Django
        • Pylons
        • Turbogears
        • Web2Py
    • Conclusão
      • Python não é a solução para todos os problemas;
      • (Não use um martelo para fixar um parafuso)
    • Perguntas ou dúvidas ?
    • Obrigado pela sua participação
      • Contato:
        • [email_address]
        • http://dropsdef.blogspot.com
    • Bebendo direto da fonte...
      • Bebendo direto na fonte:
      • http://www.python.org
      • http://www.python.org/psf/
      • http://www.python.org/~guido/
      • http://www.python.org/about/
      • http://www.python.org/about/success/
      • http://www.python.org/about/gettingstarted/
      • http://www.python.org.br/wiki/DocumentacaoPython#Artigos_e_Tutoriais
      • http://www.python.org.br/wiki/SoftwarePython#Scripts
      • http://www.python.org.br/wiki/CookBook
      • http://www.python.org.br/wiki/IdesPython
      • http://pt.wikipedia.org/wiki/Guido_van_Rossum
    • Recomendações
      • http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=Aprenda_a_Programar-Luciano_Ramalho.pdf
      • http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=aula-01.pdf
      • http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=mergulhando.pdf (parcial)
    • Outras fontes...
      • http://www.python.org.br/wiki/DocumentacaoPython#Artigos_e_Tutoriais
        • Artigos e tutoriais da Python.org.BR
      • http://www.async.com.br/projects/python/pnp.pdf
        • Curso de introdução ao Python
      • http://docs.python.org/library/sqlite3.html
        • Interação Python SQLite3
      • http://effbot.org/zone/python-compile.htm
        • Compilação CPython .PYC
      • http://ark4n.wordpress.com/2009/05/25/pyctoria-5-o-zen-do-python/
        • Completo
      • http://www.slideshare.net/franciscosouza/minicurso-de-python
        • Desde introdução até OO, estrutura de dados;
      • http://www.paradigma.com.br/Plone/cursoPython.pdf
      • http://www.slideshare.net/asergionogueira/a-linguagem-python
        • Ótimo conceito sobre estrutura de dados;
      • http://www.slideshare.net/flavioribeiro/introduo-a-linguagem-de-programao-python-presentation
        • Diferença entre versão 2.x e 3.0
      • www.visual.pro.br/py/pdf/gama.pdf
        • Baterias
      • http://www.slideshare.net/aldaba/python-mini-curso-v0812-presentation
        • Baterias