Python em (mais de) 10
     minutinhos
          Rudá Moura
       Setembro de 2009
Mantras
• Blocos de código são alinhados por
  espaços e/ou tabulações;
• Tudo em Python é um objeto;
• Variáveis referenciam a objetos; objetos
  têm tipos, mas variáveis não têm tipos;
• Não há conversão automática de tipos.
  Tudo tem que ser explícito (convertido).
Tipos simples

• # Comentário
• Nulo/Nada (NoneType) – None
• Booleano (bool) – True, False
• Inteiros (int) – 0, -1, 313373, 17179869184
• Ponto flutuante (float) – 0.0, 3.1415926536
Tipos compostos
• String (str) – ‘ola mundo!’, “assim”
• Unicode (unicode) – u‘Olá’, u“Rudá”
• Tupla (tuple) – (0, 0, 0), (255, 255, 255)
• Lista (list) – [‘vermelho’, ‘verde’, ‘azul’]
• Dicionário (dict) – {‘segunda’: 1, ‘terca’: 2,
  ‘quarta’: 3, ‘quinta’: 4, ‘sexta’: 5 }
Variáveis e Expressões
• p = True and False # or, not, p = False
• n = 1024 * 512 # + - / % **
• azul = (0x0, 0x0, 0xFF) # 0x hexadecimal
• azul[2] # 255
• lst = [p, n, azul]
• lst[-1][2] # 255 (azul[2])
• semana = {} ; semana[‘segunda’] = 1
If…
if condição:
  comandos
else: # é opcional
  comandos              if x > 0:
                          print “positivo”
                        elif x < 0:
# tipo um switch/case     print “negativo”
if condição:            else:
  comandos                print “zero”
elif condição:
  comandos
else:
  comandos
While/Do While
while condição:
 comandos

do:               soma = i = 0
                  while i < 10:
 comandos           soma += i
while:              i += 1
 condição         # soma é 45
For(each)
for elemento in sequência:
 comando

for x in range(10):
  print x # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

elems = [‘tesoura’, ‘papel’, ‘pedra’]
for elem in elems:
  print elem # tesoura, papel e pedra
Funções & Métodos
def função(argumentos):
 ‘documentacao’
 # corpo da funcao
 return algo              def fatorial(n):
                           ‘fatorial de n recursivo’
def método(self,           if n == 0: return 1
argumentos):               else:
                              return n * fatorial(n-1)
  ‘documentacao’
  # corpo do método
  return algo
Classes
class Pessoa(object):
 ‘Modelagem de pessoa’
 def __init__(self, nome, idade):
   self.nome = nome
   self.idade = int(idade)
 def primeiroNome(self):
   ‘Retorna o primeiro nome da pessoa’
   nome = self.nome.split() # corta espaços
   return nome[0] # 1º elemento da lista
class Programador(Pessoa):
 ‘Modelagem de programador’
 elementos = 0 # atributo de classe
 def __init__(self, nome, idade, linguagem=‘Python’):
   Pessoa.__init__(self, nome, idade)
   self.linguagem = linguagem
   self.karma = 0
   Programador.quantidade += 1
 def aumentaKarma(self):
   self.karma += 1
 def diminuiKarma(self):
   self.karma -= 1
Objetos
astro = Programador(‘Astrogildo Ferreira’, 30)
astro.primeiroNome() # Astrogildo
astro.linguagem # Python
nildo = Programador(‘Josenildo Moreira’, 21, ‘Erlang’)
nildo.nome # Astrogildo Ferreira
nildo.aumentaKarma()
Programador.elementos # 2
nildo.editor = ‘Emacs’
Programa passwd.py
#!/usr/bin/python
import sys
def username_of(login):

 passwd = open("/etc/passwd")

 lines = passwd.readlines()

 passwd.close()

 for line in lines:

 
 list = line.split(":”) # ['root','x', '0', '0',
        'root', '/root', '/bin/bashn']

 
 user, x, uid, gid, full_name, home, shell = list

 
 if login == user:

 
 
 return full_name

 return None
# É o main() do Python…
if __name__ == "__main__":
   for arg in sys.argv[1:]:     # [“root”, “ruda”, “abc”]
     name = username_of(arg)
        print 'O login "%s" pertence ao "%s"' % (arg, name)
     else:
        print 'O login "%s" nao existe!' % arg

# python passwd.py ruda
# Ruda Moura
Não vimos...
• Funções builtins len(), range(), int(), …
• Exceções (try/except/raise)
• Fatias (slices) x[0], x[-1], x[1:], x[1,-1]
• Decorators @foobar
• List comprehension [x for x in range(10) if
  x % 2] # [1,3,5,7,9]
• Biblioteca padrão (sys, os, urllib,…)
Consulte e aprenda
• Rudá Moura (estou ai né?)
• Python Brasil http://www.python.org.br/
• Python http://python.org/
• http://docs.python.org/tutorial/index.html
• http://www.python.org.br/wiki/
  TutorialPython

Python em (mais de) 10 minutinhos

  • 1.
    Python em (maisde) 10 minutinhos Rudá Moura Setembro de 2009
  • 2.
    Mantras • Blocos decódigo são alinhados por espaços e/ou tabulações; • Tudo em Python é um objeto; • Variáveis referenciam a objetos; objetos têm tipos, mas variáveis não têm tipos; • Não há conversão automática de tipos. Tudo tem que ser explícito (convertido).
  • 3.
    Tipos simples • #Comentário • Nulo/Nada (NoneType) – None • Booleano (bool) – True, False • Inteiros (int) – 0, -1, 313373, 17179869184 • Ponto flutuante (float) – 0.0, 3.1415926536
  • 4.
    Tipos compostos • String(str) – ‘ola mundo!’, “assim” • Unicode (unicode) – u‘Olá’, u“Rudá” • Tupla (tuple) – (0, 0, 0), (255, 255, 255) • Lista (list) – [‘vermelho’, ‘verde’, ‘azul’] • Dicionário (dict) – {‘segunda’: 1, ‘terca’: 2, ‘quarta’: 3, ‘quinta’: 4, ‘sexta’: 5 }
  • 5.
    Variáveis e Expressões •p = True and False # or, not, p = False • n = 1024 * 512 # + - / % ** • azul = (0x0, 0x0, 0xFF) # 0x hexadecimal • azul[2] # 255 • lst = [p, n, azul] • lst[-1][2] # 255 (azul[2]) • semana = {} ; semana[‘segunda’] = 1
  • 6.
    If… if condição: comandos else: # é opcional comandos if x > 0: print “positivo” elif x < 0: # tipo um switch/case print “negativo” if condição: else: comandos print “zero” elif condição: comandos else: comandos
  • 7.
    While/Do While while condição: comandos do: soma = i = 0 while i < 10: comandos soma += i while: i += 1 condição # soma é 45
  • 8.
    For(each) for elemento insequência: comando for x in range(10): print x # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 elems = [‘tesoura’, ‘papel’, ‘pedra’] for elem in elems: print elem # tesoura, papel e pedra
  • 9.
    Funções & Métodos deffunção(argumentos): ‘documentacao’ # corpo da funcao return algo def fatorial(n): ‘fatorial de n recursivo’ def método(self, if n == 0: return 1 argumentos): else: return n * fatorial(n-1) ‘documentacao’ # corpo do método return algo
  • 10.
    Classes class Pessoa(object): ‘Modelagemde pessoa’ def __init__(self, nome, idade): self.nome = nome self.idade = int(idade) def primeiroNome(self): ‘Retorna o primeiro nome da pessoa’ nome = self.nome.split() # corta espaços return nome[0] # 1º elemento da lista
  • 11.
    class Programador(Pessoa): ‘Modelagemde programador’ elementos = 0 # atributo de classe def __init__(self, nome, idade, linguagem=‘Python’): Pessoa.__init__(self, nome, idade) self.linguagem = linguagem self.karma = 0 Programador.quantidade += 1 def aumentaKarma(self): self.karma += 1 def diminuiKarma(self): self.karma -= 1
  • 12.
    Objetos astro = Programador(‘AstrogildoFerreira’, 30) astro.primeiroNome() # Astrogildo astro.linguagem # Python nildo = Programador(‘Josenildo Moreira’, 21, ‘Erlang’) nildo.nome # Astrogildo Ferreira nildo.aumentaKarma() Programador.elementos # 2 nildo.editor = ‘Emacs’
  • 13.
    Programa passwd.py #!/usr/bin/python import sys defusername_of(login): passwd = open("/etc/passwd") lines = passwd.readlines() passwd.close() for line in lines: list = line.split(":”) # ['root','x', '0', '0', 'root', '/root', '/bin/bashn'] user, x, uid, gid, full_name, home, shell = list if login == user: return full_name return None
  • 14.
    # É omain() do Python… if __name__ == "__main__": for arg in sys.argv[1:]: # [“root”, “ruda”, “abc”] name = username_of(arg) print 'O login "%s" pertence ao "%s"' % (arg, name) else: print 'O login "%s" nao existe!' % arg # python passwd.py ruda # Ruda Moura
  • 15.
    Não vimos... • Funçõesbuiltins len(), range(), int(), … • Exceções (try/except/raise) • Fatias (slices) x[0], x[-1], x[1:], x[1,-1] • Decorators @foobar • List comprehension [x for x in range(10) if x % 2] # [1,3,5,7,9] • Biblioteca padrão (sys, os, urllib,…)
  • 16.
    Consulte e aprenda •Rudá Moura (estou ai né?) • Python Brasil http://www.python.org.br/ • Python http://python.org/ • http://docs.python.org/tutorial/index.html • http://www.python.org.br/wiki/ TutorialPython