Zanurkuj w Pythonie/Dynamiczne importowanie modułów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Wycofanie wersji 56649 utworzonej przez Special:Contributions/Turbofart (User talk:Turbofart)
Linia 6:
OK, dość filozofowania. Pogadajmy o dynamicznym importowaniu modułów.
 
Najpierw zerknijmy jak normalnie importuje się moduły. Składnia polecenia import module sprawdza ścieżkę w poszukiwaniu nazwanego modułu i importuje go po nazwie. W ten sposób można importować kilka modułów na raz, podając nazwy modułów oddzielone przecinkiem. Z resztą, robiłeśrobiliśmy już to w pierwszej linii skryptu z tego rozdziału.
Przykład 16.13. Importowanie wielu modułów na raz
 
Linia 30:
# Zmienna sys staje się modułem sys, to tak jakby napisać import sys. Zmienna os staje się modułem os i tak dalej.
 
Reasumując, __import__ importuje moduł, jednak aby tego dokonać, pobiera jako argument ciąg znaków. W tym przypadku moduł, który zaimportowałeśzaimportowaliśmy był po prostu na sztywno zakodowanym ciągiem znaków, jednak nic nie stało na przeszkodzie, aby była to zmienna, lub wynik działania funkcji. Zmienna, pod którą podstawiaszpodstawiamy moduł, nie musi się nazywać tak samo jak nazwa modułu, który importujeszimportujemy. Równie dobrze mógłbyśmoglibyśmy zaimportować szereg modułów i przypisać je do listy.
 
'''Przykład 16.15. Dynamiczne importowanie listy modułów'''
Linia 49:
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'
 
# moduleNames jest po prostu listą stringówciągów znaków. Nic nadzwyczajnego, za wyjątkiem tego, że akurat te stringiciągi znaków są nazwami modułów, które mógłbśmoglibyśmy zaimportować, jeśli byśbyśmy chciałchcieli.
# WyobrażWyobraźmy sobie, że chciałeśchcieliśmy je zaimportować, a dokonałeśdokonaliśmy tego poprzez mapowanie funkcji __import__ na listę. PamiętajPamiętajmy jednak, że każdy element listy (moduleNames) będzie przekazany jako argument do wywołania raz za razem funkcji (__import__), budując w ten sposób listę zwróconych wartości i zwraca wynik.
# Tak więc z listy stringówciągów stworzyłeśznaków stworzyliśmy tak na prawdę listę rzeczywistych modułów. (TwojeNasze ścieżki mogą się różnić w zależności od systemu operacyjnego, na którym zainstalowałeśzainstalowaliśmy Pythona, faz księżyca i taminnych takich innychtam.)
# Aby upewnić się, że są to tak na prawdę moduły, zerknijmy na niektóre ich atrybuty. PamiętajPamiętajmy, że modules[0] jest modułem sys, więc modules[0].version jest sys.version. Wszystkie pozostałe atrybuty i metody tych modułów są także dostępne. Nie ma nic niezwykłego w poleceniu import, tak samo jak nie ma nic magicznego w modułach. Moduły są obiektami. Wszystko jest obiektem.
 
Teraz już powinieneśpowininniśmy móc wszystko to poskładać do kupy i rozszyfrować o co tak na prawdę chodzi w kodzie zamieszczonych tutaj przykładów.