За какво се използва __init__.py
в директорията с изходния код на Python?
Преди това той беше задължителна част от пакет (стар, преди версия 3.3 "обикновен пакет", а не по-нов 3.3+ "пакет с пространство от имена").
Python дефинира два вида пакети - обикновени пакети и пакети с пространство от имена. Обикновените пакети са традиционните пакети, каквито съществуваха в Python 3.2 и по-рано. Обикновеният пакет обикновено се реализира като директория, съдържаща файл
__init__.py
. Когато се импортира редовен пакет, този файл__init__.py
се изпълнява имплицитно и обектите, които той дефинира, се свързват с имена в пространството от имена на пакета. Файлът__init__.py
може да съдържа същия код на Python, който може да съдържа всеки друг модул, а Python ще добави някои допълнителни атрибути към модула, когато той бъде импортиран.
Но просто щракнете върху връзката, тя съдържа пример, повече информация и обяснение на пакетите с пространство от имена, видът пакети без __init__.py
.
Файлът __init__.py
кара Python да третира директориите, които го съдържат, като модули.
Освен това това е първият файл, който се зарежда в даден модул, така че можете да го използвате, за да изпълните код, който искате да се изпълнява всеки път, когато се зарежда модул, или да посочите подмодулите, които да бъдат експортирани.
Той улеснява импортирането на други файлове на Python. Когато поставите този файл в директория (да речем stuff), съдържаща други py файлове, можете да направите нещо като import stuff.other.
root\
stuff\
other.py
morestuff\
another.py
Без този __init__.py
в директорията stuff не бихте могли да импортирате other.py, защото Python не знае къде е изходният код на stuff и не може да го разпознае като пакет.