Przejdź do głównej treści
eLearner.app
Moduł 7 · Lekcja 4 z 428/36 w kursie~10 min
Lekcje modułu (4/4)

import i moduły

Moduł w Pythonie to po prostu plik z rozszerzeniem .py. Aby użyć kodu z danego modułu w innym pliku, musisz go zaimportować (import).

Formy zapisu instrukcji import

Python
# 1) import całego modułu
import math
math.sqrt(16)        # 4.0
math.pi              # 3.14159...

# 2) import konkretnych elementów
from math import sqrt, pi
sqrt(16)             # teraz dostępne bezpośrednio
pi

# 3) import z użyciem aliasu
import numpy as np      # częsty idiom
from datetime import datetime as dt

# 4) import "wszystkiego" z użyciem gwiazdki (niewskazany)
from math import *      # zaśmieca przestrzeń nazw, unikaj

Gdzie Python szuka modułów

Python szuka modułów w ścieżkach zdefiniowanych w sys.path, do których należą:

  1. katalog z aktualnie uruchomionym skryptem,
  2. katalogi zdefiniowane w zmiennej środowiskowej PYTHONPATH,
  3. zainstalowane biblioteki zewnętrzne (site-packages).
Python
import sys
sys.path     # lista katalogów

Tworzenie modułu

Utwórz plik mio_modulo.py:

Python
# mio_modulo.py
PI = 3.14159

def area_cerchio(r):
    return PI * r * r

Z poziomu innego pliku w tym samym katalogu:

Python
import mio_modulo
mio_modulo.area_cerchio(5)   # 78.53975

from mio_modulo import area_cerchio, PI

if __name__ == "__main__":

Gdy skrypt jest uruchamiany bezpośrednio, jego specjalna zmienna __name__ przyjmuje wartość "__main__". Gdy ten sam plik jest importowany jako moduł, __name__ przyjmuje jako wartość nazwę tego modułu.

Python
# strumento.py

def fai_qualcosa():
    print("lavoro!")

if __name__ == "__main__":
    # wykonuje się tylko wtedy, gdy uruchomisz `python strumento.py`
    # NIE wykona się, jeśli ktoś zaimportuje ten plik
    fai_qualcosa()

Jest to standardowy wzorzec dla plików, które mają pełnić rolę zarówno modułu wielokrotnego użytku, jak i skryptu wykonywalnego.

Pakiety: foldery zawierające moduły

Katalog zawierający plik __init__.py (nawet całkowicie pusty) staje się importowalnym pakietem (package):

Code
mio_pkg/
    __init__.py
    utenti.py
    pagamenti.py
Python
from mio_pkg import utenti
from mio_pkg.utenti import crea_utente

Spróbuj sam

Ćwiczenie#python.m7.l4.e1
Próby: 0Ładowanie...

Zaimportuj funkcję `sqrt` z modułu `math` (za pomocą `from math import sqrt`), następnie oblicz pierwiastek kwadratowy z liczby 144 i przypisz wynik do zmiennej `r`. Oceń `r`.

Ładowanie edytora...
Pokaż wskazówkę

from math import sqrt

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#python.m7.l4.e2
Próby: 0Ładowanie...

Zaimportuj moduł `random` z aliasem `rnd` (`import random as rnd`), następnie ustaw ziarno losowości na 42 za pomocą rnd.seed(42) i oceń rnd.randint(1, 100).

Ładowanie edytora...
Pokaż wskazówkę

import random as rnd

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#python.m7.l4.e3
Próby: 0Ładowanie...

Zaimportuj funkcje `sin` oraz `cos` bezpośrednio z modułu `math` za pomocą `from ... import ...`. Oblicz sumę `sin(0)` oraz `cos(0)`, zapisz ją w zmiennej `trig_sum` i ją oceń.

Ładowanie edytora...
Pokaż wskazówkę

sin(0) zwraca 0.0, cos(0) zwraca 1.0. Suma wynosi 1.0. Użyj zapisu from math import sin, cos.

Rozwiązanie dostępne po 3 próbach