Sobes.tech
Junior

Aký je rozdiel medzi súbormi .py a .pyc?

sobes.tech AI

Odpoveď od AI

.py — je zdrojový kód v Pythone, napísaný človekom a čitateľný interpretátorom. .pyc — je skompilovaný bajtový kód z .py súboru, ktorý sa používa na zrýchlenie ďalších spustení.

Python interpretátor automaticky kompiluje .py súbory do .pyc pri prvom importe modulu a ich ukladá, aby ich pri ďalších spusteniach nemusel znovu kompilovať. .pyc súbory sa ukladajú v adresári __pycache__ alebo vedľa príslušného .py súboru v starších verziách.

# Príklad obsahu `.py` súboru
def greet(name):
  print(f"Ahoj, {name}!")
# Bytecode zo súboru `.pyc` (nečitateľný priamo)
# c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00s\x0e\x00\x00\x00d\x00\x00GHd\x01\x00k\x02\x00\x83\x01\x00\x00d\x02\x00R\x00\xfa\x0bgreet.py\x05\x00\x00\x00s\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00C\x00\x00\x00s\x05\x00\x00\x00\x83\x00\x00\x00\x00Sq\x00\x00\x00s\x0c\x00\x00\x00\\x01\x00\x00\x00\x00\x01\x00\x00\x00r\x02\x00\x00\x00r\x02\x00\x00\x00\xfa\x0b<frozen greet>\x01\x00\x00\x00s\x08\x00\x00\x00\xe9\x00\x00\x00\x00r\x03\x00\x00\x00r\x04\x00\x00\x00r\x0b\x00\x00\x00r\x04\x00\x00\x00N\x86\x04\x00\x00\x00GHGHGHGHGHGHGHGHGHGHGHGHGHGHGHGHGHGHG\x0c\x12\x00\x00\x00s\x00\x00\x00\x00

Zhrnutie:

Súbor Popis Účel Čitateľnosť
.py Zdrojový kód Vývoj, písanie logiky Vysoká (človekom)
.pyc Preložený bajtový kód Rýchlejšie spustenie Nízka (strojom)

Prítomnosť .pyc súborov neovplyvňuje vykonávanie kódu, pretože ich interpretátor používa iba na optimalizáciu načítania modulov. Ak sa .py súbor zmení, .pyc súbor sa automaticky znovu vytvorí.