CodeGym /Kursy /Python SELF PL /Importowanie modułów

Importowanie modułów

Python SELF PL
Poziom 19 , Lekcja 0
Dostępny

1.1 Wprowadzenie do modułów

Moduł w Pythonie to plik z rozszerzeniem .py, zawierający kod. Moduły pozwalają dzielić duży kod na mniejsze, bardziej zrozumiałe części. Każdy moduł może zawierać funkcje, klasy i zmienne, a także wykonywać pewien kod przy jego importowaniu.

Przykład prostego modułu

Stwórzmy moduł mymodule.py:


# mymodule.py

def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159
        

Teraz ten moduł można zaimportować i używać w innym pliku.

1.2 Importowanie modułów

Python oferuje kilka sposobów importowania modułów. Przeanalizujmy je po kolei.

Importowanie całego modułu

Ogólna składnia tej operacji wygląda tak:


import modul

Ta metoda importuje cały moduł i możesz używać jego funkcji oraz zmiennych, wskazując nazwę modułu.


import modul

print(modul.greet("Alice"))  # Wyjście: Hello, Alice!
print(modul.pi)  # Wyjście: 3.14159
        

Robiliśmy już coś podobnego z modułem math, pamiętasz?


import math

print(math.ceil(13 / 7))  # zaokrąglenie w górę
print(math.floor(13 / 7))  # zaokrąglenie w dół
        

Importowanie konkretnych elementów z modułu

Możesz importować nie wszystko, co jest w module, ale tylko niektóre jego elementy. Ogólna składnia tej operacji wygląda tak:


from modul import func, var

Ta metoda importuje tylko określone funkcje, klasy lub zmienne z modułu, co pozwala używać ich bez wskazywania nazwy modułu.


from mymodule import greet, pi

print(greet("Bob"))  # Wyjście: Hello, Bob!
print(pi)  # Wyjście: 3.14159
        

Importowanie modułu z aliasem

Ogólna składnia tej operacji wygląda tak:


import modul as alias

Ta metoda pozwala zaimportować moduł i przypisać mu inną nazwę, co może być użyteczne do skrócenia długich nazw modułów lub rozwiązania konfliktów nazw.


import mymodule as mm

print(mm.greet("Charlie"))  # Wyjście: Hello, Charlie!
print(mm.pi)  # Wyjście: 3.14159
        

Importowanie wszystkich elementów z modułu

Ogólna składnia tej operacji wygląda tak:


from modul import *

Ta metoda importuje wszystkie funkcje, klasy i zmienne z modułu, co pozwala używać ich bez wskazywania nazwy modułu. Jednak nie zaleca się korzystania z tej metody, ponieważ może to powodować konflikty nazw i utrudniać czytanie kodu.


from mymodule import *

print(greet("Dave"))  # Wyjście: Hello, Dave!
print(pi)  # Wyjście: 3.14159
        

1.3 Pod maską procesu importu

Porządek wyszukiwania modułów

Kiedy importujesz moduł, Python szuka go w określonej kolejności:

  1. Bieżący katalog: Python najpierw szuka modułu w bieżącym katalogu, z którego został uruchomiony skrypt.
  2. Zmienne środowiskowe PYTHONPATH: Jeśli moduł nie został znaleziony w bieżącym katalogu, Python szuka go w katalogach wskazanych w zmiennej środowiskowej PYTHONPATH.
  3. Standardowe katalogi: Jeśli moduł nadal nie został znaleziony, Python szuka go w standardowych katalogach, takich jak katalogi wskazane w sys.path.

Przykład:


import sys

for path in sys.path:
    print(path)
        

Lokalny i globalny import

Importowanie modułów można wykonywać zarówno na poziomie globalnym (na początku pliku), jak i na poziomie lokalnym (wewnątrz funkcji lub metody).

Globalny import

Globalny import wykonywany jest na początku pliku i sprawia, że importowany moduł jest dostępny w całym pliku.


import math

def calculate_circle_area(radius):
    return math.pi * radius ** 2
        

Lokalny import

Lokalny import wykonywany jest wewnątrz funkcji lub metody i sprawia, że importowany moduł jest dostępny tylko w tej funkcji lub metodzie.


def calculate_square_root(x):
    import math
    return math.sqrt(x)
    
print(calculate_square_root(16))
        

Lokalny import może być przydatny do zmniejszenia czasu ładowania modułu lub zapobiegania konfliktom nazw.

1.4 Dynamiczny import

Dynamiczny import pozwala importować moduły podczas działania programu. Może to być przydatne, gdy trzeba importować moduły na podstawie danych wprowadzonych przez użytkownika lub innych dynamicznych warunków.

Ogólna składnia tej operacji wygląda tak:


module = __import__("modul")

Zróbmy to na przykładzie, importując moduł math w ten sposób.


module_name = "math"
module = __import__(module_name)
print(module.sqrt(16))  # Wyjście: 4.0

Praca z dalszym kodem jest podobna do używania import as, kiedy modułowi math przypisuje się alias module.

1.5 Dostęp do atrybutów modułu za pomocą funkcji getattr

Funkcja getattr pozwala dynamicznie zdobywać atrybuty z modułu (lub dowolnego obiektu). Może być przydatna w przypadkach, gdy nazwy atrybutów nie są z góry znane lub mogą się zmieniać podczas działania programu.

Składnia funkcji getattr:


getattr(object, name, default = None)

Gdzie object — to obiekt, z którego należy zdobyć atrybut, name — to string zawierający nazwę atrybutu, a default — wartość zwracana w przypadku, gdy atrybut z podaną nazwą nie istnieje. Wartość domyślna dla parametru default to None.

Przykład użycia funkcji getattr:


import math

# Zdobywamy atrybut sqrt z modułu math
sqrt_function = getattr(math, 'sqrt')

print(sqrt_function(25))  # Wyjście: 5.0

# Próbujemy zdobyć nieistniejący atrybut, zwracamy wartość domyślną
non_existent_attr = getattr(math, 'non_existent', 'default_value')

print(non_existent_attr)  # Wyjście: default_value
        

W tym przykładzie używamy funkcji getattr do zdobycia funkcji sqrt z modułu math, a następnie wywołujemy tę funkcję, aby obliczyć pierwiastek kwadratowy liczby 25. W przypadku, gdy atrybut z podaną nazwą nie istnieje, zwracana jest wartość domyślna default_value.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION