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 math

to 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 floor

To 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

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ć 😉.

PODOBNE ARTYKUŁY