Skip to content

Folha de dicas da linguagem Python

Python é uma linguagem de programação de computador multiplataforma. É uma linguagem de tipagem dinâmica orientada a objetos, originalmente projetada para escrever scripts automatizados (shell). Com a atualização contínua das versões e a adição de novos recursos da linguagem, ela é cada vez mais usada para o desenvolvimento de projetos independentes de larga escala.

Geral

  • Python diferencia maiúsculas de minúsculas
  • A indexação em Python começa em 0
  • Python usa espaços em branco (tabulações ou espaços) para recuar o código em vez de usar chaves.

Ajuda

Página inicial de ajuda help()
Ajuda da função help(str.replace)
Ajuda do módulo help(re)

Módulos (Bibliotecas)

Listar conteúdo do módulo dir(module1)
Carregar módulo import module1 *
Chamar função do módulo module1.func1()

A instrução import cria um novo namespace e executa todas as instruções no arquivo .py associado a esse namespace. Se você deseja carregar o conteúdo do módulo no namespace atual, use “from module1 import *”

Tipos Escalares

Verificar tipo de dado: type(variable)

Inteiros

int/long - Inteiros grandes são convertidos automaticamente em inteiros longos

Pontos flutuantes

float - 64 bits, não há tipo “double”

Booleanos

bool - Verdadeiro (True) ou Falso (False)

Strings

str - Python 2.x padrão: ASCII; Python 3: Unicode

  • Strings podem ser aspas simples/aspas duplas/aspas triplas
  • Uma string é uma sequência de caracteres, portanto, pode ser tratada como qualquer outra sequência
  • Caracteres especiais podem ser completados iniciando com \ ou r
    str1 = r'this\f?ff'
  • A formatação de strings pode ser alcançada de várias maneiras
    template = '%.2f %s haha $%d'
    str1 = template % (4.88, 'hola', 2)

str(), bool(), int() e float() também são funções de conversão de tipo explícitas

Valor Nulo

NoneType(None) - Valor ’null’ do Python (apenas uma instância do objeto None existe)

  • None não é uma palavra-chave reservada, mas a única instância de “NoneType”
  • None é um valor padrão comum para parâmetros de função opcionais:
    def func1(a, b, c = None)
  • Uso comum de None:
    if variable is None :

Data e Hora (Datetime)

datetime - Módulo “datetime” embutido do Python, que fornece os tipos “datetime”, “date”, “time”, etc.

  • “datetime” combina as informações armazenadas em “date” e “time”
    Criar datetime a partir de string dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’)
    Obter objeto “date” dt1.date()
    Obter objeto “time” dt1.time()
    Formatar datetime para string dt1.strftime(’%m/%d/%Y %H:%M’)
    Modificar valores de campo dt2 = dt1.replace(minute = 0, second=30)
    Obter diferença diff = dt1 - dt2 # diff é um objeto ‘datetime.timedelta’

Estruturas de Dados

Tuplas

Uma tupla é uma sequência de comprimento fixo e imutável.

Criar tupla tup1=4,5,6 ou tup1 = (6,7,8)
Criar tupla aninhada tup1 = (4,5,6), (7,8)
Converter sequência ou iterador para tupla tuple([1, 0, 2])
Concatenar tuplas tup1 + tup2
Descompactar tupla a, b, c = tup1
Trocar variáveis b, a = a, b

Listas

Uma lista é uma sequência de elementos de comprimento variável e mutável.

Criar lista list1 = [1, ‘a’, 3] ou list1 = list(tup1)
Concatenar listas list1 + list2 ou list1.extend(list2)
Adicionar à lista list1.append(‘b’)
Inserir na posição especificada list1.insert(posIdx, ‘b’) **
Remover elemento por índice valueAtIdx = list1.pop(posIdx)
Remover a primeira ocorrência de um valor list1.remove(‘a’)
Verificar se o valor existe na lista 3 in list1 => True ***
Ordenar lista list1.sort()
Ordenar usando função fornecida pelo usuário list1.sort(key = len) # Ordenar por comprimento

Nota:

  • O índice de “início” é incluído, mas o índice de “parada” não.
  • início/parada podem ser omitidos, por padrão no início/fim.

Slicing (Fatiamento)

Os tipos de sequência incluem ‘str’, ‘array’, ’tuple’, ’list’, etc.

list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]

Dicionários (Hashes)

Criar dicionário dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
Construir dicionário pela função de mapeamento dict(zip(keyList, valueList))
Obter elemento dict1[‘key1’]
Alterar/Adicionar elemento dict1[‘key1’] = ’newValue’
Obter valor, retornar padrão se não existir dict1.get(‘key1’, defaultValue)
Verificar se a chave existe ‘key1’ in dict1
Excluir elemento del dict1[‘key1’]
Obter lista de Chaves dict1.keys()
Obter lista de Valores dict1.values()
Atualizar valores dict1.update(dict2) # valores de dict1 substituídos por dict2

Conjuntos (Sets)

Um conjunto é uma coleção não ordenada de elementos únicos.

Criar conjunto set([3, 6, 3]) ou {3, 6, 3}
Verificar se set1 é um subconjunto de set2 set1.issubset(set2)
Verificar se set2 é um subconjunto de set1 set1.issuperset(set2)
Verificar se os conjuntos são idênticos set1 == set2
União (ou) set1
Interseção (e) set1 & set2
Diferença set1 - set2
Diferença simétrica (xor) set1 ^ set2

Funções

  • Forma básica

    def func1(posArg1, keywordArg1 = 1, ..):
  • Uso comum de “Funções são objetos”:

    def func1(ops = [str.strip, user_define_func, ..], ..):
        for function in ops:
            value = function(value)
  • Valores de retorno

    • Se não houver instrução return ao final de uma função, ela não retorna valor.
    • Retornar múltiplos valores através de um objeto tupla
     return (value1, value2)
    
     value1, value2 = func1(..)
  • Funções anônimas (Lambda)

    lambda x : x * 2
    # def func1(x) : return x * 2

Funções comumente usadas

  1. Enumerate retorna uma tupla de sequência (chave, valor), onde chave é o índice do elemento atual.

    for key, val in enumerate(collection):
  2. Sorted ordena todos os objetos iteráveis.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip empacota os elementos correspondentes dos objetos em tuplas e retorna uma lista dessas tuplas.

    zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..]
  4. Reversed retorna um iterador invertido.

    list(reversed(range(10)))

Controle e Fluxo

  1. Operadores para condições “if else”:

    Verificar se duas variáveis são o mesmo objeto var1 is var2
    Verificar se duas variáveis são objetos diferentes var1 is not var2
    Verificar se duas variáveis têm o mesmo valor var1 == var2
  2. Uso comum do operador for:

    for element in iterator :
  3. ‘pass’ - Não faz nada, geralmente usado como instrução de espaço reservado.

  4. Expressão ternária

    value = true-expr if condition else false-expr
  5. Não há instrução switch/case, use if/elif em vez disso.

Orientação a Objetos

  1. ‘object’ é a base para todos os tipos Python

  2. Tudo (números, strings, funções, classes, módulos, etc.) é um objeto, e cada objeto tem um ’type’. Variáveis de objeto são ponteiros para sua localização na memória.

  3. Forma básica de um objeto

    class MyObject(object):
        # 'self' é equivalente a 'this' em Java/C++
        def __init__(self, name):
            self.name = name
    
        def memberFunc1(self, arg1):
            ..
    
        @staticmethod
        def classFunc2(arg1):
            ..
    
    obj1 = MyObject('name1') 
    obj1.memberFunc1('a') 
    MyObject.classFunc2('b')
  4. Ferramenta interativa:

    dir(variable1) # Lista todos os métodos disponíveis no objeto

Operações com Strings

Juntar listas/tuplas usando um delimitador

', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'

Formatar string

string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')

Dividir string

sep = '-'
stringList1 = string1.split(sep)

Obter substring

start = 1
string1[start:8]

Preencher string com zeros

month = '5'
month.zfill(2) => '05' 
month = '12'
month.zfill(2) => '12'

Tratamento de Exceções

  1. Forma básica
try:
    ..
except ValueError as e:
    print e
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. Lançar exceções manualmente
raise AssertionError # Falha na asserção
raise SystemExit # Solicitar saída do programa
raise RuntimeError('Mensagem de erro: ..')

Compreensões de Lista, Conjunto e Dicionário

Açúcar sintático para tornar o código mais fácil de ler e escrever.

  1. Compreensão de lista

    Forma concisa de uma nova lista filtrando elementos de uma coleção e transformando os elementos que passam no filtro em uma única expressão.

    Forma básica

    [expr for val in collection if condition]

    Atalho:

    result = []
    for val in collection:
        if condition:
            result.append(expr)

    A condição de filtro pode ser omitida, deixando apenas a expressão.

  2. Compreensão de dicionário

    {key-expr : value-expr for value in collection if condition}
  3. Compreensão de conjunto

    Forma básica: Idêntico à compreensão de lista, apenas usando {} em vez de []

  4. Compreensão de lista aninhada

    Forma básica:

    [expr for val in collection for innerVal in val if condition]