Valores de retorno do procedimento Python [closed]

No Python, é possível criar um procedimento que não tenha retorno explícito. ou seja:

def test(val):
    if 0 == val:
        return 8

Além disso, é possívelatribuir os resultados dessa função para uma variável:

>>> a = test(7)
>>> print `a`
'None'

Por que diabos é isso? Que lógica de linguagem está por trás dessa desconcertante decisão de design? Por que isso simplesmente não gera um erro no compilador?

EDIT: Sim, eu percebo que funciona dessa maneira. Obrigado. Minha pergunta é por que? Parece uma maneira tão segura de introduzir bugs sutis em seu código. E parece, como foi mencionado abaixo por e-satis, ir contra o muito sábio ditado pítónico de que "explícito é melhor que implícito".

Então, o que há com isso? É apenas uma supervisão de projeto ou uma suposição simplificadora ou uma decisão deliberada e ponderada?

EDIT: Será que todos concordam que expressar a intenção desta forma é muito melhor:

def test(val):
    if 0 == val:
        return 8
    else:
        return None

Em caso afirmativo, por que o Python preferiria o estilo antigo para criar uma exceção de tempo de compilação?

EDIT: S.Lott traz o ponto explicitamente (e outros também, ele apenas parece mais claro para mim) que esse comportamento é um resultado do fato de que o Python é uma linguagem dinâmica e, portanto, não pode verificar em tempo de compilação, o comportamento do tempo de execução do sistema.

Como não há distinção entre procedimentos (aquelas funções que não retornam nenhum valor) e funções (aquelas que o fazem), não há nada a ser aplicado em tempo de compilação. O que significa que quando chegamos ao comportamento em tempo de execução, ou temos uma falha catastrófica em alguns casos (lançamos uma exceção) ou falhamos silenciosamente assumindo que o programador sabia o que estava fazendo e entendeu o comportamento padrão.

A maneira pythonic é fazer o último, a maneira do estilo C é fazer o primeiro.
Isso parece fazer sentido como uma boa razão para fazê-lo dessa maneira.

A justificativa clara de S.Lott está enterrada nos comentários para a resposta aceita, então achei melhor resumir aqui.

Eu vou adiar a aceitação da resposta um pouco para ver se S.Lott faz uma resposta oficial. Caso contrário, darei os pontos ao SilentGhost.