2011-09-02 16 views
72

estoy mirando sobre el código para el módulo de Python multiprocessing, y que contiene esta línea:¿Qué significa a. en una declaración de importación en Python significa?

from ._multiprocessing import win32, Connection, PipeConnection 

en lugar de

from _multiprocessing import win32, Connection, PipeConnection 

la sutil diferencia siendo el período anterior a _multiprocessing. Qué significa eso? ¿Por qué el período?

+2

Se llama importación relativa: http://docs.python.org/tutorial/modules.html – Aillyn

+0

Sin el '.', si tiene un archivo' _multiprocessing.py' por algún motivo indescifrable al lado de su script principal, 'multiprocesamiento' se rompería. Con el '.', asegura que obtiene su propio módulo. –

+2

pregunta útil !! –

Respuesta

65

Esa es la nueva sintaxis para relative imports explícita. Significa importar desde el paquete actual.

+7

¿Qué define qué es el "paquete actual"? – fraxture

+2

Debería decir * desde donde está el paquete de importación *. Básicamente significa el espacio de nombres actual o el directorio del paquete. – Keith

+0

Gracias, creo que sé a qué se refiere. Solo para ser claro, ¿te importaría dar un ejemplo? – fraxture

16

El punto en el nombre del módulo se utiliza para la importación de módulos relativos (consulte here y here, sección 6.4.2).

Puede usar más de un punto, haciendo referencia no al paquete curado sino a sus padres. Esto solo debe usarse dentro de paquetes, en el módulo principal siempre se deben usar nombres de módulos absolutos.

Cuestiones relacionadas