Ce face import / from ... import
Codul Python este împărțit în module: fișiere .py cu funcții, clase și constante. import math încarcă modulul, iar funcțiile lui se folosesc cu prefixul modulului: math.sqrt(16).
from math import sqrt aduce doar numele cerut, folosit apoi fără prefix. as dă un nume mai scurt: import datetime as dt. Evită from modul import *: nu se mai vede de unde vin numele și pot apărea conflicte.
Un modul este încărcat o singură dată per program, oricâte import-uri ai scrie. Codul de la nivelul de sus al unui fișier pe care vrei să-l rulezi doar direct, nu și la import, se pune sub if __name__ == "__main__":. Pachetele externe se instalează cu pip install nume.
Exemple
Exemplul 1: Cele trei forme
import math
from random import choice, seed
import datetime as dt
print(math.sqrt(81))
seed(3)
print(choice(["Iași", "Cluj", "Brașov"]))
print(dt.date(2026, 10, 19).strftime("%d.%m.%Y"))
Rezultat
9.0
Iași
19.10.2026
Exemplul 2: Ce conține un modul
import string
publice = [nume for nume in dir(string) if not nume.startswith("_")]
print(publice[:6])
print(string.digits)
Rezultat
['Formatter', 'Template', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords']
0123456789
Exemplul 3: if __name__ == „__main__”
Când fișierul este rulat direct, __name__ are valoarea "__main__". Când este importat, __name__ este numele modulului, iar blocul nu rulează.
def aduna(a, b):
return a + b
if __name__ == "__main__":
print("Rulez direct:", aduna(2, 3))
Rezultat
Rulez direct: 5
Greșeli frecvente
- Îți numești fișierul la fel ca un modul standard (
random.py,json.py).import randomîncarcă fișierul tău, nu modulul Python, și primești erori ciudate. - Primești
ModuleNotFoundError: No module named 'requests'. Pachetul nu este instalat în mediul Python pe care îl folosești; ruleazăpython3 -m pip install requests.