é uma linguagem interpretada, interativa, funcional, orientada a objetos, dinamicamente tipada e com gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl
Entre todas as linguagens que aprendi, Python é a que menos interfere entre mim e o problema. É a mais efetiva para traduzir pensamentos em ações. Eric Raymond
Life is Better Without Braces. Bruce Eckel
Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language. Peter Norvik
Guido van Rossum é referido pela comunidade python, desde 1995, como Benevolent Dictator For Life (BDFL) Desde dezembro de 2005 Guido trabalha na Google, dedicando 50% do seu tempo com a linguagem www.python.org/~guido neopythonic.blogspot.com/
Não veio da cobra! "Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python´s Flying Circus)”.
NADA! Python foi desenvolvido como um projeto open source, sem fins lucrativos e gerenciado pela PSF (Python Software Foundation)
Para obter o interpretador Python acessar http://www.python.org/download/ Versões Python 2.7.3 foi liberada em 9 de abril de 2012 Python 3.2.3* foi liberada em 10 de abril de 2012
http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZeneca Honeywell ...
Governo Federal Petrobras Serpro Embratel Globo.com StarOne Conectiva CPqD Async Haxent UTFPR ...
Vários projetos da comunidade Software Livre Blender LibreOffice Zope/Plone MoinMoin Mailman BitTorrent Chandler Gimp Plone Django OpenERP inVesalius
Web e Internet Database GUIs Científico e processamento numérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos e renderização 3D Onde mais sua imaginação mandar!
Unix: HP-UX, Solaris ... Linux (freqüentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven (ctypes, win32all) Apple iPhone Google Android
Compilação Híbrida como Java, programas Python são compilados, porém para uma linguagem intermediária, destinada a um interpretador Isola Python de muitas das excentricidades das máquinas reais na qual ele roda provê um nível de portabilidade
Cython onde existir um compilador C ISO/IEC 9899:1990 Jython máquina virtual Java PyPy Python implementado em Python Python for .NET [Brian Lloyd], IronPython (da M$) Python for Delphi LunaticPython interoperando com Lua Ruby/Python em Ruby importar módulos Python)
De altíssimo nível e poderosa Elegante, com sintaxe simples e concisa Fácil de aprender, “cabe” no seu cérebro ! Multiparadigma: Funcional, Procedural e Orientado a Objetos Possui suporte nativo a estruturas de dados complexas
Extensa biblioteca padrão Um módulo para o que você precisar  sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, etc.
Código é muito mais lido que escrito! Readability importa! (muito) Python te ajuda a escrever código mais legível
Python é case sensitive Linhas são delimitadas por enter Tipagem é forte e dinâmica Não há declaração de variáveis como em C, Java, Pascal, etc. Você pode utilizar o interpretador em modo interativo ou seu IDE/editor favoritos
Inúmeros Geany Vim Aptana Komodo NetBeans PyCharm PyDev (Eclipse) Wing IDE Pyshield Spyder MS-Visual Studio Etc.
Ninja IDE (Ninja Is Not Just Another IDE) Multiplataforma Editor de código poderoso Gerenciamento de Projetos Plugins  http://ninja-ide.org/
Em Python, variáveis são referências a objetos não guardam os objetos em si não têm tipo, mas os objetos aos quais elas se referem têm tipo São criadas dinamicamente Uma variável não pode ser utilizada em uma expressão sem ter sido inicializada não existe “criação automática” de variáveis
Variáveis não são “caixas” com valores Variáveis são “rótulos” colados em objetos São criadas pela atribuição Operador =
Atribuição não gera uma cópia do objeto Uma referência (variável) pode ser liberada Usando del  Não existindo mais referências a um objeto, ele é removido da memória (garbage collector)
Normalmente para programas maiores você irá codificar arquivos (scripts) em um IDE extensão py O script pode ser executado diretamente da linha de comando python oi.py Ou carregado para o interpretador interativo >>> import oi
Módulos são arquivos que contêm qualquer estrutura python (classes, funções, variáveis, etc.) e podem ser importados nos programas Quando importado pela primeira vez o módulo é compilado e um arquivo .pyc ou .pyo é gerado Um módulo é um objeto singleton Apenas uma instância é carregada em memória torna-se disponível globalmente para o programa que fez a importação
Funções importantes são disponibilizadas em módulos da biblioteca padrão Ex.: módulo math tem funções como sin, cos, exp e outras Um módulo pode conter não só funções, mas também variáveis ou classes Ex.: math define a constante pi Os módulos são localizados pelo interpretador pela lista de diretórios em PYTHONPATH (sys.path), que inclui o diretório atual
Para usar os elementos de um módulo, comando import import modulo from modulo import nome1,...,nomen from modulo import * A importação ocorre apenas uma vez! Para carregar um módulo novamente (que tenha sido alterado) pode-se usar a função reload
Exemplos
Se um programa pode ser executado isolado ou importado dentro de outro, como distinguir as duas situações? O módulo principal de um programa tem a variável __name__ contendo “__main__” Para executar um código apenas se o módulo for o principal e não quando ele for importado
Python Enhancement Proposal São documentos padronizados da comunidade Python  Uma PEP propõe um padrão, melhoria, funcionalidade, estrutura, explicações sobre funcionalidades, etc. Veja a PEP #0 http://www.python.org/dev/peps/pep-0000/
A estrutura dos blocos é definida pela indentação Não misturar tabulações com espaços!!!
Quando o caractere # aparece, o interpretador ignora o restante do código até o final da linha Isso não vale dentro de strings Para várias linhas use asplas triplas (docstring) Será útil para documentar funções, classes, módulos, etc.
Tipos básicos int = normalmente 32 bits long = limitado ao tamanho da memória  Há promoção automática de int para long  Divisão de inteiros em python < 3 resulta sempre int
Também são tipos numéricos básicos float = ponto flutuante de 32 bits complex= para números complexos
Construtores ou funções de conversão int (n) float (n) complex (n) abs (n)
Básicos +, -, *, /, ** Inteiros %, // Bit a Bit &, |, ^, ~, >>, <<
Módulo math e outros
Representa o valor nulo Equivalente a False em operações booleanas Aplicações típicas Valor default em parâmetros de funções Valor de retorno de funções que será descartado  Como void de C/C++
Constantes True e False Ocorre conversão automática entre tipos Conversão explícita pode ser feita com bool(x)
Relacionais >, <, >=, <=, ==, !=, is, is not Sempre retornam um bool Lógicos and, or, not
str – Sequência de bytes, com a acentuação dependente do encoding Delimitadas por aspas, apóstrofo ou três aspas ou três apóstrofos
Codificações iso-8859-1: padrão ISO Latin-1 iso-8859-15: idem, com símbolo € (Euro) cp1252: MS-Windows codepage 1252  ISO Latin-1 aumentado com caracteres usados em editoração eletrônica (‘’ “” •) utf-8: Unicode codificado em 8 bits compatível com ASCII até o código 127  utiliza 2 bytes para caracteres não-ASCII  padrão recomendado pelo W3C e está sendo adotado pela maioria dos sistemas
Constantes str ou unicode são interpretadas segundo a codificação declarada num comentário especial no início do arquivo .py Nós (brasileiros) frequentemente lidamos com textos não ASCII!
Use caracteres de formatação, como na printf de C %s, %d, %f são os mais comuns
Usando type
Usando type
Tuplas são sequências imutáveis não é possível modificar as referências contidas na tupla Tuplas constantes são representadas como sequências de itens entre parênteses CUIDADO: em certos contextos os parênteses ao redor das tuplas podem ser omitidos!
Listas são coleções de itens heterogêneos que podem ser acessados sequencialmente ou indexados São mutáveis Constantes do tipo lista são delimitadas por colchetes []
Facilmente você pode criar uma lista numérica com range([inicio,] fim[, passo]) Retorna uma sequência numérica conforme os argumentos dados Normalmente usada em laços for
Os tipos string, lista, tupla, buffer são sequências Coleção ordenada e iterável de itens Operações s[i] = acessa um item s[-i] = acessa um item pelo final s+z = concatena s*n = produz n cópias de s concatenadas e in s = elemento e está em s? e not in s = elemento e não está em s?
Operações de slicing s[a:b] cópia de a (inclusive) até b (exclusive) s[a:] cópia a partir de a (inclusive) s[:b] cópia até b (exclusive) s[:] cópia total de s s[a:b:n] cópia de n em n itens Atribuição s[2:5] = [6,3,2,0] Aplicável somente em sequências mutáveis
Dicionários são estruturas de dados que implementam mapeamentos coleções de pares chave:valor que podem ser recuperados pela chave A chave pode ser qualquer imutável
Entrada com input Saída com print
if if (expressao): bloco [elif (expressao): bloco] [else: bloco]
exemplo
for for variavel in sequencia: bloco [else: bloco] while while (expressao): bloco [else: bloco]
Exemplo
Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução da função e define o resultado a ser devolvido  Pode ser None
Exemplo
Ei, não vamos complicar!
Estourar a pilha de execução é “fácil” E aí, tentou fat(1000)?
Mudando o tamanho da pilha de ativação
Classe file representam arquivos Use a função open (ou construtor file(), são sinônimos) abrir arquivo binário para leitura arq = file(‘imagem.png','rb') abrir arquivo texto para escrita arq = open(‘log.txt','w') abrir arquivo para acrescentar (append) arq = file(‘imagem.png','a')
Operações de E/S são realizadas pelo SO O módulo os possui diversas variáveis e funções que ajudam um programa Python adequar-se ao SO os.getcwd() o diretório atual os.chdir(dir) diretório atual para dir os.sep caractere que separa componentes de um caminho ('/' para Unix, '' para Windows) os.path.exists(path) diz se path é o nome de um arquivo existente
Lembra? Multiparadigma! Inclui Orientação a Objetos Tudo em python é objeto. Mesmo!
Simplesmente defina a classe e use-a! Classe (class) é um tipo de dados especial que define como construir objetos Também armazena alguns dados que são compartilhados por todas as instâncias dessa classe  Instâncias são objetos criados segundo a definição da classe Python não separa a interface da implementação da classe
Para os métodos, defina funções dentro do escopo de class
A função __init__ serve como construtor Nos métodos, o parâmetro self referencia a instância atual NÃO É passado explicitamente
Não é necessário liberar objetos explicitamente Esqueça free ou delete! Coletor automático de lixo, lembra?
Herança, métodos de classe, métodos estáticos, atributos “privados”, propriedades, etc. Mas, ... I´ll be back in #2!
TCL-TK é parte integrante, via tkinter Diversos outros bindings de frameworks wxWidgets QT GTK etc.
Módulo CSV (Comma-Separated Values)
“List comprehensions” Produz uma lista a partir de qualquer objeto iterável  Sintaxe inspirada em Haskell
Inverter a ordem das cartas baralho.reverse() Tirar a carta do topo baralho.pop() Adicionar 4 coringas baralho.extend([‘Coringa’]*4) Colocar em ordem baralho.sort()  Pelo número de letras: baralho.sort(key=len)
Baterias: urllib e re
Tutorial Python ed. #2

Tutorial Python ed. #2

  • 2.
    é uma linguagem interpretada,interativa, funcional, orientada a objetos, dinamicamente tipada e com gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl
  • 3.
    Entre todas as linguagensque aprendi, Python é a que menos interfere entre mim e o problema. É a mais efetiva para traduzir pensamentos em ações. Eric Raymond
  • 4.
    Life is Better WithoutBraces. Bruce Eckel
  • 5.
    Python has beenan important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language. Peter Norvik
  • 7.
    Guido van Rossumé referido pela comunidade python, desde 1995, como Benevolent Dictator For Life (BDFL) Desde dezembro de 2005 Guido trabalha na Google, dedicando 50% do seu tempo com a linguagem www.python.org/~guido neopythonic.blogspot.com/
  • 8.
    Não veio dacobra! "Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python´s Flying Circus)”.
  • 10.
    NADA! Pythonfoi desenvolvido como um projeto open source, sem fins lucrativos e gerenciado pela PSF (Python Software Foundation)
  • 11.
    Para obter ointerpretador Python acessar http://www.python.org/download/ Versões Python 2.7.3 foi liberada em 9 de abril de 2012 Python 3.2.3* foi liberada em 10 de abril de 2012
  • 12.
    http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZeneca Honeywell ...
  • 13.
  • 14.
    Vários projetos dacomunidade Software Livre Blender LibreOffice Zope/Plone MoinMoin Mailman BitTorrent Chandler Gimp Plone Django OpenERP inVesalius
  • 15.
    Web e Internet Database GUIs Científico e processamento numérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos e renderização 3D Onde mais sua imaginação mandar!
  • 17.
    Unix: HP-UX, Solaris... Linux (freqüentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven (ctypes, win32all) Apple iPhone Google Android
  • 18.
    Compilação Híbrida como Java, programas Python são compilados, porém para uma linguagem intermediária, destinada a um interpretador Isola Python de muitas das excentricidades das máquinas reais na qual ele roda provê um nível de portabilidade
  • 19.
    Cython onde existirum compilador C ISO/IEC 9899:1990 Jython máquina virtual Java PyPy Python implementado em Python Python for .NET [Brian Lloyd], IronPython (da M$) Python for Delphi LunaticPython interoperando com Lua Ruby/Python em Ruby importar módulos Python)
  • 20.
    De altíssimo nívele poderosa Elegante, com sintaxe simples e concisa Fácil de aprender, “cabe” no seu cérebro ! Multiparadigma: Funcional, Procedural e Orientado a Objetos Possui suporte nativo a estruturas de dados complexas
  • 21.
    Extensa biblioteca padrão Um módulo para o que você precisar  sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, etc.
  • 23.
    Código é muitomais lido que escrito! Readability importa! (muito) Python te ajuda a escrever código mais legível
  • 25.
    Python é casesensitive Linhas são delimitadas por enter Tipagem é forte e dinâmica Não há declaração de variáveis como em C, Java, Pascal, etc. Você pode utilizar o interpretador em modo interativo ou seu IDE/editor favoritos
  • 27.
    Inúmeros Geany Vim Aptana Komodo NetBeans PyCharm PyDev (Eclipse) Wing IDE Pyshield Spyder MS-Visual Studio Etc.
  • 28.
    Ninja IDE (NinjaIs Not Just Another IDE) Multiplataforma Editor de código poderoso Gerenciamento de Projetos Plugins  http://ninja-ide.org/
  • 29.
    Em Python, variáveissão referências a objetos não guardam os objetos em si não têm tipo, mas os objetos aos quais elas se referem têm tipo São criadas dinamicamente Uma variável não pode ser utilizada em uma expressão sem ter sido inicializada não existe “criação automática” de variáveis
  • 30.
    Variáveis não são“caixas” com valores Variáveis são “rótulos” colados em objetos São criadas pela atribuição Operador =
  • 31.
    Atribuição não gerauma cópia do objeto Uma referência (variável) pode ser liberada Usando del  Não existindo mais referências a um objeto, ele é removido da memória (garbage collector)
  • 32.
    Normalmente para programasmaiores você irá codificar arquivos (scripts) em um IDE extensão py O script pode ser executado diretamente da linha de comando python oi.py Ou carregado para o interpretador interativo >>> import oi
  • 33.
    Módulos são arquivosque contêm qualquer estrutura python (classes, funções, variáveis, etc.) e podem ser importados nos programas Quando importado pela primeira vez o módulo é compilado e um arquivo .pyc ou .pyo é gerado Um módulo é um objeto singleton Apenas uma instância é carregada em memória torna-se disponível globalmente para o programa que fez a importação
  • 34.
    Funções importantes sãodisponibilizadas em módulos da biblioteca padrão Ex.: módulo math tem funções como sin, cos, exp e outras Um módulo pode conter não só funções, mas também variáveis ou classes Ex.: math define a constante pi Os módulos são localizados pelo interpretador pela lista de diretórios em PYTHONPATH (sys.path), que inclui o diretório atual
  • 35.
    Para usar oselementos de um módulo, comando import import modulo from modulo import nome1,...,nomen from modulo import * A importação ocorre apenas uma vez! Para carregar um módulo novamente (que tenha sido alterado) pode-se usar a função reload
  • 36.
  • 37.
    Se um programapode ser executado isolado ou importado dentro de outro, como distinguir as duas situações? O módulo principal de um programa tem a variável __name__ contendo “__main__” Para executar um código apenas se o módulo for o principal e não quando ele for importado
  • 39.
    Python Enhancement Proposal São documentos padronizados da comunidade Python  Uma PEP propõe um padrão, melhoria, funcionalidade, estrutura, explicações sobre funcionalidades, etc. Veja a PEP #0 http://www.python.org/dev/peps/pep-0000/
  • 40.
    A estrutura dosblocos é definida pela indentação Não misturar tabulações com espaços!!!
  • 41.
    Quando o caractere# aparece, o interpretador ignora o restante do código até o final da linha Isso não vale dentro de strings Para várias linhas use asplas triplas (docstring) Será útil para documentar funções, classes, módulos, etc.
  • 42.
    Tipos básicos int = normalmente 32 bits long = limitado ao tamanho da memória  Há promoção automática de int para long  Divisão de inteiros em python < 3 resulta sempre int
  • 43.
    Também são tiposnuméricos básicos float = ponto flutuante de 32 bits complex= para números complexos
  • 44.
    Construtores ou funçõesde conversão int (n) float (n) complex (n) abs (n)
  • 45.
    Básicos +, -,*, /, ** Inteiros %, // Bit a Bit &, |, ^, ~, >>, <<
  • 46.
  • 47.
    Representa o valornulo Equivalente a False em operações booleanas Aplicações típicas Valor default em parâmetros de funções Valor de retorno de funções que será descartado  Como void de C/C++
  • 48.
    Constantes True eFalse Ocorre conversão automática entre tipos Conversão explícita pode ser feita com bool(x)
  • 49.
    Relacionais >, <,>=, <=, ==, !=, is, is not Sempre retornam um bool Lógicos and, or, not
  • 50.
    str – Sequênciade bytes, com a acentuação dependente do encoding Delimitadas por aspas, apóstrofo ou três aspas ou três apóstrofos
  • 51.
    Codificações iso-8859-1: padrãoISO Latin-1 iso-8859-15: idem, com símbolo € (Euro) cp1252: MS-Windows codepage 1252  ISO Latin-1 aumentado com caracteres usados em editoração eletrônica (‘’ “” •) utf-8: Unicode codificado em 8 bits compatível com ASCII até o código 127  utiliza 2 bytes para caracteres não-ASCII  padrão recomendado pelo W3C e está sendo adotado pela maioria dos sistemas
  • 52.
    Constantes str ouunicode são interpretadas segundo a codificação declarada num comentário especial no início do arquivo .py Nós (brasileiros) frequentemente lidamos com textos não ASCII!
  • 53.
    Use caracteres deformatação, como na printf de C %s, %d, %f são os mais comuns
  • 54.
  • 55.
  • 56.
    Tuplas são sequênciasimutáveis não é possível modificar as referências contidas na tupla Tuplas constantes são representadas como sequências de itens entre parênteses CUIDADO: em certos contextos os parênteses ao redor das tuplas podem ser omitidos!
  • 57.
    Listas são coleçõesde itens heterogêneos que podem ser acessados sequencialmente ou indexados São mutáveis Constantes do tipo lista são delimitadas por colchetes []
  • 58.
    Facilmente você podecriar uma lista numérica com range([inicio,] fim[, passo]) Retorna uma sequência numérica conforme os argumentos dados Normalmente usada em laços for
  • 59.
    Os tipos string,lista, tupla, buffer são sequências Coleção ordenada e iterável de itens Operações s[i] = acessa um item s[-i] = acessa um item pelo final s+z = concatena s*n = produz n cópias de s concatenadas e in s = elemento e está em s? e not in s = elemento e não está em s?
  • 60.
    Operações de slicing s[a:b] cópia de a (inclusive) até b (exclusive) s[a:] cópia a partir de a (inclusive) s[:b] cópia até b (exclusive) s[:] cópia total de s s[a:b:n] cópia de n em n itens Atribuição s[2:5] = [6,3,2,0] Aplicável somente em sequências mutáveis
  • 61.
    Dicionários são estruturasde dados que implementam mapeamentos coleções de pares chave:valor que podem ser recuperados pela chave A chave pode ser qualquer imutável
  • 62.
  • 63.
    if if (expressao): bloco [elif (expressao): bloco] [else: bloco]
  • 64.
  • 65.
    for for variavel insequencia: bloco [else: bloco] while while (expressao): bloco [else: bloco]
  • 66.
  • 67.
    Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução da função e define o resultado a ser devolvido  Pode ser None
  • 68.
  • 70.
    Ei, não vamoscomplicar!
  • 71.
    Estourar a pilhade execução é “fácil” E aí, tentou fat(1000)?
  • 72.
    Mudando o tamanhoda pilha de ativação
  • 73.
    Classe file representamarquivos Use a função open (ou construtor file(), são sinônimos) abrir arquivo binário para leitura arq = file(‘imagem.png','rb') abrir arquivo texto para escrita arq = open(‘log.txt','w') abrir arquivo para acrescentar (append) arq = file(‘imagem.png','a')
  • 74.
    Operações de E/Ssão realizadas pelo SO O módulo os possui diversas variáveis e funções que ajudam um programa Python adequar-se ao SO os.getcwd() o diretório atual os.chdir(dir) diretório atual para dir os.sep caractere que separa componentes de um caminho ('/' para Unix, '' para Windows) os.path.exists(path) diz se path é o nome de um arquivo existente
  • 75.
    Lembra? Multiparadigma! IncluiOrientação a Objetos Tudo em python é objeto. Mesmo!
  • 76.
    Simplesmente defina aclasse e use-a! Classe (class) é um tipo de dados especial que define como construir objetos Também armazena alguns dados que são compartilhados por todas as instâncias dessa classe  Instâncias são objetos criados segundo a definição da classe Python não separa a interface da implementação da classe
  • 77.
    Para os métodos,defina funções dentro do escopo de class
  • 78.
    A função __init__serve como construtor Nos métodos, o parâmetro self referencia a instância atual NÃO É passado explicitamente
  • 79.
    Não é necessárioliberar objetos explicitamente Esqueça free ou delete! Coletor automático de lixo, lembra?
  • 80.
    Herança, métodos declasse, métodos estáticos, atributos “privados”, propriedades, etc. Mas, ... I´ll be back in #2!
  • 81.
    TCL-TK é parteintegrante, via tkinter Diversos outros bindings de frameworks wxWidgets QT GTK etc.
  • 83.
  • 84.
    “List comprehensions” Produzuma lista a partir de qualquer objeto iterável  Sintaxe inspirada em Haskell
  • 87.
    Inverter a ordemdas cartas baralho.reverse() Tirar a carta do topo baralho.pop() Adicionar 4 coringas baralho.extend([‘Coringa’]*4) Colocar em ordem baralho.sort()  Pelo número de letras: baralho.sort(key=len)
  • 88.