W tym artykule opiszę Ci czym w języku Python jest instrukcja "from" 🧨! Co to takiego, gdzie się stosuje i w jakich przypadkach może Ci się przydać 👍. Także, zapraszam 😊!
"FROM" W JĘZYKU PYTHON, CZYLI IMPORT MODUŁU TYLKO W PEWNEJ CZĘŚCI
Materiał stanowi kontynuację o zagadnieniu importowania modułów, więc zalecam przeczytanie go w pierwszej kolejności, zanim przejdziesz dalej (jeśli import w Pythonie jest Ci obcy) ⚠️.
Zaczynamy od wyjaśnienia samego słowa "from", przedstawienia powiązania z instrukcją importu, a następnie zapoznania się z użyciem tej instrukcji w kodzie źródłowym 🔍!
Czym jest "from" w języku Python?
W Pythonie, "from" ma ścisły związek z instrukcją "import" i także służy do importowania modułów. Nie stosujemy go zamiennie wstawiając słowo "from" zamiast słowa "import", a występuje jako "dodatek" do tego słowa, czyli gdy zdecydujemy się na użycie słowa "from", to wtedy korzystamy z obu słów naraz 🙂!
Różnica pomiędzy importowaniem z użyciem samego słowa "import", a z użyciem obu słów naraz jest kluczowa bowiem samo "import" importuje cały moduł bez wyjątku, a "from" pozwala na import tylko wybranych przez nas zmiennych i funkcji! W ten sposób sięgamy tylko po to, co potrzebne, bez pobierania wszystkiego jak leci 😁.
Oba sposoby importowania charakteryzują się taką samą wydajnością (w rozumieniu działania procesora), więc możesz swobodnie korzystać z jednego i drugiego sposobu zapisu, tak jak wolisz 😉. O wiele istotniejsze różnice jakie trzeba mieć na względzie, to odwoływanie się do importowanych składowych, gdyż przy nieumiejętnym korzystaniu, możemy sobie narobić "bidy" 😯!
W dalszej części materiału wyjaśnię o co chodzi, a teraz przejdźmy do ukazania jak korzystać z instrukcji "from" w kodzie ⏩!
Jak skorzystać z instrukcji "from" w języku Python?
Słowo "from" nie jest samodzielnym hasłem, tylko dodatkiem do instrukcji "import", toteż możemy z niego skorzystać wyłącznie w kontekście instrukcji importu ⚠️! Mając dowolną instrukcję importu, na przykład taką 👇:
import mathto chcąc ją połączyć ze słowem "from", musimy całą konstrukcję napisać zupełnie inaczej 💥! "Wzór" jest następujący 👇:
from [nazwa modułu] import [wartość/funkcja występująca w module]A to jest konkretny przykład 👇:
from math import floorTo będzie oznaczać zaimportowanie tylko funkcji "floor" z modułu matematycznego "math" i niczego innego! Wtedy ulega zmianie sposób odwoływania się do takiej wartości i/lub funkcji i chcąc z niej skorzystać, nie piszemy w sposób znany z instrukcji importu z użyciem samego słowa "import" 👇:
print(math.floor(6.6))bo będzie błąd 🚫, tylko piszemy bezpośrednio samą nazwę, tak jakby to coś znajdowało się w tym samym skrypcie 👇:
print(floor(6.6))Z tego idzie ważny wniosek, że może powstać kolizja nazw, gdy w ten sposób importujemy wartość i/lub funkcję z dwóch różnych modułów i w obu przypadkach noszą identyczną nazwę 🔥! Czyli wtedy mamy taką sytuację 👇:
from [moduł A] import [wartość/funkcja występująca w module o tej samej nazwie]
from [moduł B] import [wartość/funkcja występująca w module o tej samej nazwie]Warto wiedzieć, że to nie powoduje zgłoszenia błędu przez Pythona 💥! To sprawi, że ostatni import zostanie "unieważniony" i aktualnym będzie ten "najnowszy" (moduł B) 😮! Ten błąd będzie się "ukrywał" do czasu, aż odwołamy się do importowanej składowej i powstanie wynik, którego się nie spodziewaliśmy ❌.
Dlatego trzeba wiedzieć jak na to zaradzić!
Jak uniknąć kolizji nazw importowanych wartości lub funkcji powstałych przez instrukcję "from" w języku Python?
Najlepiej kompletnie unikać takiego wielokrotnego importowania w jednym skrypcie, lecz jeżeli naprawdę nie będziemy w stanie, bo np. jedna funkcja potrzebuje dwóch takich funkcji z dwóch osobnych modułów, to możesz skorzystać z dodatkowego słowa kluczowego "as" i utworzyć alias dla obu funkcji, tak aby przypisać im indywidualne nazwy (o aliasach pisałem w artykule o samej instrukcji importu) ✅.
To jest przykład 👇:
from [moduł A] import [wartość/funkcja występująca w module o tej samej nazwie] as [nazwa A]
from [moduł B] import [wartość/funkcja występująca w module o tej samej nazwie] as [nazwa B]Nie podałem konkretnych nazw, gdyż ciężko w samym Pythonie znaleźć jakąś wartość czy funkcję o tej samej nazwie, która powtarzałaby się w dwóch różnych modułach 😅.
![]() |
Słowo kluczowe "from" w języku Python modyfikuje tradycyjny styl importowania modułów poprzez selektywne pobieranie interesujących nas wartości i/lub funkcji.
I to wszystko co warto na ten temat wiedzieć 😉.
