Aparte de pedir directamente Guido, no creo que su va a encontrar cualquier explicación de esto.
La sintaxis ha existido desde el principio. La primera versión de las fuentes de Python que pude encontrar fue python 1.0.1. Al observar el registro de cambios en el archivo de Gramática, encontramos referencias incluso a versiones anteriores. En la versión 2 de Python (creo que estamos hablando de segundo después de la liberación 0.9.0) tenemos esta nota:
# added 'from' NAME option on import clause, and '*' to import all;
Esto se añadió al mismo tiempo que
# added class definition.
Así que la declaración de importación surgió al mismo tiempo que las clases se agregaron a Python. Esto viene de cuando Python fue el proyecto en solitario de Guido van Rossum. En otras palabras, la respuesta que estás buscando se pierde en las arenas del tiempo.
Ahora, aquí está mi especulación de por qué la declaración de importación dice from x import y
en lugar de import y from x
.
El documentation for the import statement proporciona el algoritmo básico para la implementación de la importación:
declaraciones de importación se ejecutan en dos pasos: (1) encontrar un módulo, y inicializarlo si es necesario; (2) defina un nombre o nombres en el espacio de nombres local (del ámbito donde se produce la instrucción import ). La declaración viene en dos formas que difieren en si usa la palabra clave from. El primer formulario (sin desde) repite estos pasos para cada identificador en la lista. El formulario con from realiza el paso (1) una vez, y luego realiza el paso (2) repetidamente.
En ambas versiones de la instrucción de importación, el primer paso de este algoritmo es el extremo izquierdo. Supongo que este fue el orden más obvio para un implementador de lenguaje, aunque el inglés podría leerse más naturalmente si el orden se revierte.
Todavía estoy aprendiendo Python, pero en mi humilde opinión lo siguiente parece que hubiera sido más consistente con el resto del lenguaje: 'importación (módulo, x, y, z)'. No hay necesidad de 'de' en absoluto. – FMc
@FM: si no desea que 'import' obtenga un tratamiento sintáctico especial, tendrá que escribir' import ('module', 'x', 'y', 'z') ', pasando los * nombres * de los objetos, porque los mismos objetos no están disponibles hasta * después de * la 'importación'. – dan04
La mejor sintaxis de importación que he visto fue en Haskell: 'módulo de importación (a, b, c)'. Limpio, claro y hace que las declaraciones de importación múltiples se vean uniformes y alineadas (a excepción del caso de 'importación calificada', desafortunadamente). Y no tengo idea de por qué GvR eligió ese feo 'de ... importación'. – firegurafiku