Tabela de conteúdos

Dicas para Python

Esse não é um tutorial, não é um guia, muito menos um guia completo. São apenas minhas anotações pessoais sobre Python que podem servir como um guia de referência rápida (Cheat Sheet).

Instalações

Configurando o ambiente

Como programo sempre em ambiente Linux com o editor VIM as dicas aqui são focadas nisso.

Meu arquivo de configuração do VIM (~/.vimrc) que chama o ~/.vimrc-python:

autocmd BufNewFile *.py              :source ~/.vimrc-python
autocmd BufRead    *.py              :source ~/.vimrc-python

Meu arquivo de configuração .vimrc-python

filetype indent on
set expandtab           " enter spaces when tab is pressed
set textwidth=90        " break lines when line length increases
set tabstop=4           " use 4 spaces to represent tab
set softtabstop=4
set shiftwidth=4        " number of spaces to use for auto indent
set autoindent
set backspace=indent,eol,start
let g:syntastic_python_python_exec = '/usr/bin/python3'
let g:syntastic_python_pylint_exec = '/usr/bin/pylint3'
source $VIMRUNTIME/indent/python.vim

Verificando código

pylint

Uso:

black

Testes com pytest

A ideia é que você crie um programa que vá testar seu código. O pytest é uma ferramenta que vai facilitar isso.

Exemplo de código:

def bubble_sort(lista):
    """Ordenação via algorítimo Bubble Sort"""
 
    for passnum in range(len(lista)-1, 0, -1):
        mudou = False
        for i in range(passnum):
            if lista[i] > lista[i+1]:
                lista[i], lista[i+1] = lista[i+1], lista[i]
                print(lista)
                mudou = True
        if not mudou:
            return lista
    return lista

Exemplo de programa que testa o código:

# -*- coding: UTF-8 -*-
 
import pytest
import semana5
 
class Testa_semana5_bubble():
 
    @pytest.mark.parametrize("lista, resultado", [
        ([5, 1, 4, 2], [1, 2, 4, 5]),
        ([12, 13, 14, 11], [11, 12, 13, 14]),
        ([12, 13, -2, 14, 11], [-2, 11, 12, 13, 14]),
        ])
 
    def testes(self, lista, resultado):
        assert semana5.bubble_sort(lista) == resultado

Para realizar o teste chamamos o programa que testa via pytest:

$ pytest-3 testa.py 
=== test session starts ===
platform linux -- Python 3.6.8, pytest-3.3.2, py-1.5.2, pluggy-0.6.0
rootdir: /tmp/curso_python/week5_testes_automatizados, inifile:
plugins: pylint-0.8.0
collected 3 items
 
testa.py ... [100%]
 
=== 3 passed in 0.03 seconds ===

Venv

Referência sobre ambientes virtuais e sobre gerenciamento de pacotes com venv no python.

Dentro de um virtualenv

pexpect/pxssh

O pexpect é o equivalente ao programa original “expect”, feito em tcl, muito usado em programação shell script. O pexpect é particularmente útil para programadores que lidam com infra-estrutura, pois fornece um meio de automatizar aplicativos que o shell diretamente não consegue, como ssh, telnet, etc, em outras palavras, programas que se apropriam do terminal e que não aceitam parâmetros pela stdin.

Django

Recomendações PEP

Referências externas