Dicas Python

Use enumerate para obter os índices de uma lista juntamente com yield

>>> a = ['a', 'b', 'c', 'd']
>>> for index, value in enumerate(a): print(index, value)
...
0 a
1 b
2 c
3 d

Encadeie operadores de comparação

>>> x = 5
>>> 4 < x < 6
True
>>> x < 6 < 7 < 8
True
>>> 6 > x <= x * 2
True
>>> 5 == x > 1
True

Utilize a atribuição condicional (ternário)

x = 3 if y == 2 else 1

Você pode combinar mais de uma condição

x == 3 if y == 2 else 1 if y == -1 else 4

Execute a função A ou B

(func1 if y == 1 else func2)(arg1, arg2)

Instancie a classe A ou B

x = (class1 if y == 1 else class2)(arg1, arg2)

For…else else é executado sempre que o loop não é interrompido por break

for value in foo:
    if value == 0:
	break
else:
	print('value nunca foi 0')

Cuidado com argumentos com valor padrão

def test(a=[])
    a.append(1)
    return a

>>> test()
[1]
>>> test()
[1, 1]

def test(a=None):
    if a is None:
        a = []
    a.append(1)
    return a

>>> test()
[1]
>>> test()
[1]

Calcular tempo de execução de uma função

def timer(fn, *args):
    import time
    start = time.clock()
    return fn(*args), time.clock() - start

>>> timer(max, range(1e6)
(999999, 0.4921875)

Troque valores de variáveis facilmente

>>> a = 10
>>> b = 5
>>> a, b
(10, 5)

>>> a, b = b, a
>>> a, b
(5, 10)

With para escopo

with open('arquivo.txt', 'w') as f:
	f.write('Hello!')

Acessar documentação de classes, métodos e funções

>>> print func.__doc__

Documentar classe, método ou função

def test():
    """my function documentation"""
    ...

Transpor uma matriz em 0,007KB ou menos

>>> m = [(1, 2, 3), (4, 5, 6)]
>>> zip(*m)
[(1, 4), (2, 5), (3, 6)]

Ostream cout do C++ no Python

import sys

class ostream:
    def __init__(self, file):
        self.file = file
        
    def __lshift__(self, obj):
        self.file.write(str(obj));
        return self

cout = ostream(sys.stdout)
cerr = ostream(sys.stderr)
endl = '\n'

cout << x << " " << y << endl

Programe C-Style {} se não quiser usar espaços ou tabs

from __future__ import braces

Zen of Python, By Tim Peters

import this

Mais um easter egg, antigravity

import antigravity

You may also like...