Ja, na przykład, jestem wdzięczny za to pytanie, ponieważ odpowiedź jest zwięzła i daje dokładnie potrzebną wiedzę. Dokumentacja jest w porządku i elegancka, ale jest pełna i zawiera o wiele więcej informacji niż to, o co prosił PO, a na pewno więcej niż potrzebowałem. Chciałem tylko odpowiedzieć na to konkretne pytanie, a odpowiedź poniżej jest dokładnie tym, czego chciałam. Wielu z nas po prostu nie potrzebuje takich formalnych lub szczegółowych odpowiedzi.
Aha, więc kiedy mówisz, że nazwa pliku jest traktowana jako przestrzeń nazw, zrobiłbyś coś takiego? „mymodule.var1” w pierwszym przypadku, czy „myclass.var1” w drugim przypadku?
Dark Templar
1
Nie dokładnie. Pakiet nadal liczy się jako część przestrzeni nazw. Jeśli chcesz zrobić to, co powiedziałeś, musisz to zrobić z modułu mypackage import mymodule.
Yam Marcovic
Przydatne może być dodanie czegoś o pakietach przestrzeni nazw, dla których kod niekoniecznie musi pojawiać się w tym samym drzewie katalogów.
holdenweb,
@holdenweb Nigdy nie korzystałem z różnych mechanizmów tam związanych bezpośrednio, więc nie jestem ekspertem. Jeśli podasz szczegółowe wyjaśnienie na ten temat w nowej odpowiedzi, odniosę się do tego z mojego.
Yam Marcovic
Prawdopodobnie trochę zbyt ezoteryczny, aby warto było tego
Odpowiedzi:
Moduł Python to po prostu plik źródłowy Python, który może ujawniać klasy, funkcje i zmienne globalne.
Po zaimportowaniu z innego pliku źródłowego Python nazwa pliku jest traktowana jako przestrzeń nazw.
Pakiet Python to po prostu katalog modułów Pythona.
Na przykład wyobraź sobie następujące drzewo katalogów w
/usr/lib/python/site-packages
:Więc zrobiłbyś:
lub
źródło