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
# 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, unikajGdzie Python szuka modułów
Python szuka modułów w ścieżkach zdefiniowanych w sys.path, do których należą:
- katalog z aktualnie uruchomionym skryptem,
- katalogi zdefiniowane w zmiennej środowiskowej
PYTHONPATH, - zainstalowane biblioteki zewnętrzne (
site-packages).
import sys
sys.path # lista katalogówTworzenie modułu
Utwórz plik mio_modulo.py:
# mio_modulo.py
PI = 3.14159
def area_cerchio(r):
return PI * r * rZ poziomu innego pliku w tym samym katalogu:
import mio_modulo
mio_modulo.area_cerchio(5) # 78.53975
from mio_modulo import area_cerchio, PIif __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.
# 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):
mio_pkg/
__init__.py
utenti.py
pagamenti.py
from mio_pkg import utenti
from mio_pkg.utenti import crea_utenteSpróbuj sam
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`.
Pokaż wskazówkę
from math import sqrt
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
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).
Pokaż wskazówkę
import random as rnd
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
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ń.
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