¿Por qué algunas excepciones de Python son minúsculas? [cerrado]

8

En Python, las excepciones son las clases y las mayúsculas y minúsculas como tales. Por ejemplo: OSError.

Sin embargo, hay algunas excepciones, como las del módulo de socket , que se nombran en minúsculas. Por ejemplo: socket.timeout, socket.error.

¿Por qué es esto?

MalaHeurística
fuente
2
No estoy seguro de que esto sea responsable, pero es muy interesante.
Jared Smith
2
¿Diferentes autores? ¿No hay convenciones de nomenclatura establecidas?
Johnny Mopp
2
La pregunta puede reducirse a algo similar a "¿Por qué algunas funciones de Python camelCase?" Algunas bibliotecas tienen un estilo ligeramente inconsistente que ha evolucionado con el tiempo. Creo que PEP-8 habla de esto y fue un intento de "poner a todos en la misma página", lo cual fue parcialmente exitoso.
ggorlen
2
Tenga en cuenta que las preguntas "por qué" sobre el diseño del lenguaje generalmente se consideran fuera de tema aquí , ya que no son "prácticas", en el sentido de algo cuya respuesta le permitiría corregir un error o cambiar la forma en que realiza la práctica de programación. (Consulte los criterios "prácticos y responsables" en la cuarta viñeta de stackoverflow.com/help/on-topic , que se agrega a otras condiciones).
Charles Duffy
1
No estoy de acuerdo en este caso específico, @CharlesDuffy. Si no tuviera experiencia con Python, podría pensar que había algo especial en ellos que significa que debería manejarlos de cierta manera, o que eran sutilmente diferentes de alguna otra manera que probablemente me muerdan. Creo que es razonable preguntar por qué no son como los demás.
Kirk Strauser

Respuestas:

7

Según los documentos,

excepción socket.error Un alias en desuso de OSError.

Modificado en la versión 3.3: Siguiendo PEP 3151, esta clase se convirtió en un alias de OSError.

PEP 3151 dice

Si bien los tipos de excepción estándar viven en el espacio de nombres raíz, se distinguen visualmente por el hecho de que usan la convención CamelCase, mientras que casi todas las demás incorporan nombres en minúsculas (excepto True, False, None, Ellipsis y NotImplemented)

Vishnudev
fuente
Pero, ¿por qué no hacer también excepciones de espacio de nombres no raíz CamelCase? Hacerlos en minúsculas no hace nada para resolver la contaminación del espacio de nombres.
BadHeuristics
1
Así es como PSF quiere que sea. Si tiene una objeción,
planteela
@Vishnudev El PSF no quiere que las excepciones de socket sean minúsculas. Son artefactos históricos que quedan para no romper el código.
Terry Jan Reedy
Tal vez se mencionó en los artículos de PEP después de 3151, pero el artículo de PEP 3151 sugiere lo contrario, indicando que "mientras que casi todas las demás incorporan nombres en minúsculas", lo que significa que las incorporaciones deberían tener minúsculas. Eliminaré mi comentario si crees que no es apropiado @TerryJanReedy
Vishnudev
@Vishnudev 'otras construcciones usan nombres en minúsculas' (en python.org/dev/peps/pep-3151/#possible-objections ) se refiere a clases integradas como int, float, complex, tuple, set, list, dict y algunos otros. Todas las excepciones en builtins , enumeradas en docs.python.org/3/library/exceptions.html#built-in-exceptions , son CamelCase. Las excepciones adicionales definidas en otros módulos deben seguir ese patrón a menos que haya buenas razones para lo contrario. Los sockets datan de cuando las excepciones eran cadenas en lugar de clases e instancias de clase. (La eliminación haría que mis respuestas fueran menos sensatas.)
Terry Jan Reedy