Skip to content

Folha de dicas da linguagem Python

O Python é uma linguagem de programação de computador multiplataforma. É uma linguagem orientada a objetos de tipagem dinâmica, originalmente projetada para escrever scripts de automação (shell). Com a atualização contínua de versões e a adição de novas funcionalidades à linguagem, ela é cada vez mais utilizada para o desenvolvimento de projetos independentes e de grande escala.

Geral

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

Ajuda (Help)

Página inicial da ajuda help()
Ajuda de funções help(str.replace)
Ajuda de módulos help(re)

Módulos (Bibliotecas)

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

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

Tipos Escalares

Verificar o tipo de dados: type(variable)

Inteiros (Integers)

int/long - Inteiros grandes são convertidos automaticamente em inteiros longos (no Python 3, existe apenas o tipo int, que lida com qualquer tamanho).

Flutuantes (Floats)

float - 64 bits, não existe o tipo “double”.

Booleanos (Booleans)

bool - Verdadeiro (True) ou Falso (False).

Strings

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

  • As strings podem estar entre aspas simples/duplas/triplas.
  • Uma string é uma sequência de caracteres e, portanto, pode ser tratada como qualquer outra sequência.
  • Caracteres especiais podem ser representados precedendo-os com \ ou r (strings brutas / raw strings).
    str1 = r'isso\f?ff'
  • A formatação de strings pode ser obtida 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 (Null)

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

  • None não é uma palavra-chave reservada, mas a instância única 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 - O módulo nativo “datetime” do Python fornece os tipos “datetime”, “date”, “time”, etc.

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

Estruturas de Dados

Tuplas (Tuples)

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

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

Listas (Lists)

Uma lista é uma sequência de comprimento variável e cujos elementos podem ser modificados.

Criar lista list1 = [1, ‘a’, 3] or list1 = list(tup1)
Concatenar listas list1 + list2 or list1.extend(list2)
Adicionar à lista list1.append(‘b’)
Inserir em posição específica list1.insert(posIdx, ‘b’)
Remover por índice valueAtIdx = list1.pop(posIdx)
Remover o primeiro valor encontrado list1.remove(‘a’)
Verificar se o valor existe 3 in list1 => True
Ordenar lista list1.sort()
Ordenar com função personalizada list1.sort(key = len) # ordenar por comprimento

Nota:

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

Fatiamento (Slicing)

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

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

Dicionários (Hash)

Criar dicionário dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
Construir dicionário via zip dict(zip(keyList, valueList))
Obter elemento dict1[‘key1’]
Alterar/Adicionar elemento dict1[‘key1’] = ’newValue’
Obter valor, senão retornar padrão dict1.get(‘key1’, defaultValue)
Verificar se a chave existe ‘key1’ in dict1
Remover elemento del dict1[‘key1’]
Obter lista de Keys dict1.keys()
Obter lista de Values dict1.values()
Atualizar valores dict1.update(dict2) # os valores do dict1 são substituídos pelo dict2

Conjuntos (Sets)

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

Criar conjunto set([3, 6, 3]) or {3, 6, 3}
Verificar se é subconjunto set1.issubset(set2)
Verificar se é superconjunto set1.issuperset(set2)
Verificar igualdade set1 == set2
União (or) set1
Interseção (and) 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, não retorna nenhum valor (None).
    • Retornar múltiplos valores através de uma tupla.
    return (value1, value2)
    
    value1, value2 = func1(..)
  • Funções anônimas (Lambda):

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

Funções comuns

  1. Enumerate: retorna uma sequência de tuplas (índice, valor), onde o índice é a posição atual.

    for key, val in enumerate(collection):
  2. Sorted: ordena qualquer objeto iterável.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip: agrupa 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 de Fluxo

  1. Operadores de condição “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 marcador de posição.

  4. Expressão ternária:

    value = true-expr if condition else false-expr
  5. Não existem instruções switch/case; use if/elif.

Orientação a Objetos (OOP)

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

  2. Tudo (números, strings, funções, classes, módulos, etc.) é um objeto, e cada objeto tem um ’type’. As 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' equivale ao '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. Ferramentas interativas:

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

Operações com Strings

Unir lista/tupla com um separador:

', '.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 sub-string (slice):

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ção manualmente:
raise AssertionError # Falha na asserção
raise SystemExit # Solicitar saída do programa
raise RuntimeError('Mensagem de erro :..')

Compreensões de Listas, Conjuntos e Dicionários

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

  1. Compreensão de Listas:

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

    Forma básica:

    [expr for val in collection if condition]

    Atalho para:

    result = []
    for val in collection:
        if condition:
            result.append(expr)
  2. Compreensão de Dicionários:

    {key-expr : value-expr for value in collection if condition}
  3. Compreensão de Conjuntos: Mesmo que a compreensão de lista, mas usando {} em vez de [].

  4. Compreensão de Listas Aninhadas:

    Forma básica:

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