Valores de retorno del procedimiento de Python [cerrado]

En Python es posible crear un procedimiento que no tenga un retorno explícito. es decir.:

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

Además, es posibleasignar Los resultados de esa función a una variable:

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

¿Por qué diablos es eso? ¿Qué lógica del lenguaje está detrás de esa decisión de diseño desconcertante? ¿Por qué eso simplemente no genera un error de compilación?

EDIT: Sí, me doy cuenta de que funciona de esa manera. Gracias. Mi pregunta es por que Parece una manera segura de introducir errores sutiles en tu código. Y parece, como se mencionó a continuación por e-satis, ir en contra del muy sabio dicho pitón de que "explícito es mejor que implícito".

Entonces, ¿qué pasa con esto? ¿Es solo una supervisión del diseño o una suposición simplificadora o una decisión deliberada y considerada?

EDITAR: Todos estarían de acuerdo en que expresar la intención de esta manera es mucho mejor:

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

Si es así, ¿por qué Python preferiría el estilo anterior a generar una excepción de tiempo de compilación?

EDICIÓN: S.Lott resalta el punto explícitamente (y otros lo hacen, me parece muy claro) que este comportamiento es el resultado del hecho de que Python es un lenguaje dinámico y, por lo tanto, no se puede verificar en tiempo de compilación. Comportamiento en tiempo de ejecución del sistema.

Como no hay distinción entre los procedimientos (las funciones que no devuelven valores) y las funciones (las que sí lo hacen), no hay nada que hacer cumplir en el momento de la compilación. Lo que significa que cuando llegamos al comportamiento en tiempo de ejecución, o bien tenemos una falla catastrófica en algunos casos (lanzamos una excepción) o fallamos en silencio suponiendo que el programador sabía lo que estaban haciendo y entendió el comportamiento predeterminado.

La forma pitónica es hacer lo último, la forma de estilo C es hacer lo primero.
Eso parece tener sentido como una buena razón para hacerlo de esa manera.

La clara justificación de S.Lott está oculta en los comentarios de la respuesta aceptada, así que pensé que era mejor resumir aquí.

Me abstendré de aceptar la respuesta por un momento para ver si S. Lott responde oficialmente. De lo contrario, le daré los puntos a SilentGhost.

Respuestas a la pregunta(6)

Su respuesta a la pregunta