Cosa fa a. in una dichiarazione di importazione in Python significa?


141

Sto cercando il codice per il multiprocessingmodulo di Python e contiene questa riga:

from ._multiprocessing import win32, Connection, PipeConnection

invece di

from _multiprocessing import win32, Connection, PipeConnection

la sottile differenza è il periodo precedente _multiprocessing. Cosa significa? Perché il periodo?


3
Si chiama importazione relativa: docs.python.org/tutorial/modules.html
Aillyn

Senza il ., se avessi un file _multiprocessing.pyper qualche motivo indecifrabile vicino al tuo script principale, multiprocessingsi spezzerebbe. Con il ., assicura che ottiene il proprio modulo.
Chris Morgan,

Se a si .riferisce ai moduli peer, perché la documentazione direbbe di usare un .quando quel modulo multiprocessore dovrebbe far parte delle normali librerie sys.path? La domanda e il chiarimento di Chris li confondono o non capisco? Apprezzo l'aiuto.
rfii,

Risposte:


120

Questa è la nuova sintassi per le importazioni relative esplicite . Significa importare dal pacchetto corrente.


26
Cosa definisce quale sia il "pacchetto attuale"?
frana il

7
Dovrebbe dire da dove si trova il pacchetto di importazione . Fondamentalmente significa lo spazio dei nomi corrente o la directory del pacchetto.
Keith,

2
Grazie, penso di sapere cosa intendi. Giusto per essere chiari, ti dispiacerebbe fornire un esempio?
frana il

11
Puoi fare cose come:from . import peermodule from .. import parentpackagemodule
Keith il

2
@bmc Un buon modo per imparare è organizzare un piccolo esperimento e provarlo tu stesso. ;-)
Keith

22

Il punto nel nome del modulo viene utilizzato per l'importazione del modulo relativo (vedere qui e qui , sezione 6.4.2).

Puoi usare più di un punto, facendo riferimento non al pacchetto corrente ma ai suoi genitori. Questo dovrebbe essere usato solo all'interno dei pacchetti, nel modulo principale si dovrebbero sempre usare nomi di modulo assoluti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.