Valores com significado
Um nome em Python referencia um objeto. O tipo pertence ao objeto: um inteiro representa uma contagem, uma string representa texto e um booleano representa uma condição. Receber "20" de um ficheiro não é o mesmo que receber o inteiro 20. Converte e valida dados na fronteira do programa.
Comparar antes de agir
Usa == para comparar valores e is para identidade. Uma lista vazia é falsa num contexto booleano, mas uma string com o texto "False" é verdadeira porque não está vazia. Ao validar uma entrada, distingue ausência, zero e texto vazio conforme a regra de negócio.
Aplicação guiada no trabalho
Uma automação recebe contagens e opções por texto. Define primeiro o que é permitido: count pode ser zero, mas não None nem negativo; enabled aceita apenas true e false depois de remover espaços exteriores e normalizar maiúsculas. Converte a contagem e trata falhas sem substituir silenciosamente por zero. Para a opção, usa um mapeamento explícito: bool("false") é verdadeiro por ser texto não vazio. No suporte, um erro de configuração deve identificar a chave e a categoria da falha, sem expor credenciais. Não uses eval para interpretar uma opção simples. Experimenta entradas válidas, vazias, ausentes e fora dos limites e decide o resultado esperado antes de executar o lote.
Inteiros e booleanos na fronteira
Se um contrato aceita apenas inteiros nativos, type(value) is int exclui booleanos e subclasses. isinstance(value, int) aceita True porque bool deriva de int. Escolhe a regra pelo contrato antes de converter; não uses truthiness para inferir tipos. Depois de validar o tipo, aplica limites e significado. Zero pode ser uma quantidade válida mesmo quando False deve ser rejeitado.
Validar a unidade antes de converter
Num limite de protocolo medido em bytes, mede os bytes codificados que serão enviados; len(str) conta pontos de código, não o tamanho UTF-8. O texto pré-composto ação tem quatro pontos de código e seis bytes UTF-8. Também int(3.9) não prova que a entrada era inteira: descarta a fração em direção a zero. Define a regra de aceitação antes de converter, para não transformar silenciosamente uma entrada inválida numa quantidade aparentemente válida.
raw_count = "20"
count = int(raw_count)
if count > 10:
print("Review required")Um script recebe o número de operações pendentes como texto. Valida se o valor pode ser convertido e se é não negativo antes de gerar um alerta. Uma falha de conversão precisa de uma resposta explícita.
Armadilhas comuns
Confundir texto false com False; rejeitar zero quando só None é ausência.
Tópicos relacionados: Coleções sem surpresas · Funções pequenas, contratos claros
Valida e converte entradas na fronteira; compara valores com == e identidade com is.
Referência: Python 3.14: Built-in types · Python 3.14; DR Python 2026.3