2011-06-06 13 views
8

¿Cuál es la razón detrás de no permitir * las importaciones relativas? p.ej.python: ¿Cuál es la razón detrás de no permitir * en las importaciones relativas?

from ..new_tool import * 

o hacer una importación en relación directa:

import ..new_tool 
+0

de ..new_tool import * no es saludable .. Importará todo bajo ..new_tool. Puede crear un conflicto con su method_name o attribute_name si su nombre declarado coincide con el nombre importado. Algunas veces pueden ocurrir dependencias cíclicas. – Tauquir

+0

@Tauquir: eso se aplica a cualquier 'importación *', no solo a las relativas específicamente. – Claudiu

+0

aún esperando una respuesta sobre la parte 'import *' que tampoco se aplica al ordinario – Claudiu

Respuesta

7

La razón por la que este último está prohibido es que ..new_tool no se puede utilizar en una expresión (PEP 328):

La razón import .foo está prohibido es porque después de

import XXX.YYY.ZZZ 

luego XXX.YYY.ZZZ se puede utilizar en una expresión . Pero

.moduleY 

no se puede utilizar en una expresión .

Desde * -imports sólo deben ser siempre un corte rápido, mientras que en el desarrollo, sospecho que la funcionalidad para el pariente * -imports se quedó fuera porque no es necesario.

+0

hmm supongo que podrían haber hecho 'import .foo como _foo'. sin embargo, es bueno no tener 'import *' s en tu código. – Claudiu

+0

Sea extraño permitir 'import ... as' pero no una' 'simple'' importación. – katrielalex

+0

cierto. de hecho, supongo que siempre puedes hacer 'desde. import foo', para que no pierdas nada al no poder hacer 'import .foo'. – Claudiu

Cuestiones relacionadas