2011-09-02 12 views
72

Czekam na kod dla modułu Pythona multiprocessing i zawiera tę linię:Co robi a. w deklaracji importu w Pythonie oznacza?

from ._multiprocessing import win32, Connection, PipeConnection 

zamiast

from _multiprocessing import win32, Connection, PipeConnection 

subtelna różnica jest okresem przed _multiprocessing. Co to znaczy? Dlaczego okres?

+2

To się nazywa względny import: http://docs.python.org/tutorial/modules.html – Aillyn

+0

Bez '.', jeśli miałeś plik' _multiprocessing.py' z jakiegoś nieczytelnego powodu obok głównego skryptu, "Wieloprocesorowość" pęknie. Z '.' zapewnia, że ​​otrzymuje swój własny moduł. –

+2

przydatne pytanie !! –

Odpowiedz

65

To jest nowa składnia jawnego relative imports. Oznacza to import z bieżącego pakietu.

+7

Co definiuje "obecny pakiet"? – fraxture

+2

Należy powiedzieć * od miejsca, w którym pakiet importujący ma wartość *. Zasadniczo oznacza bieżącą przestrzeń nazw lub katalog pakietów. – Keith

+0

Dzięki, myślę, że wiem, co masz na myśli. Dla jasności, czy mógłby Pan podać przykład? – fraxture

16

Kropka w nazwie modułu służy do względnego importu modułu (patrz here i here, rozdział 6.4.2).

Możesz użyć więcej niż jednej kropki, nie odwołując się do aktualnego pakietu, ale do jego rodzica (rodziców). Powinno to być używane tylko w pakietach, w module głównym zawsze należy używać bezwzględnych nazw modułów.