Подразумеваемые неймспейсы или неявные пакеты.
Этот функционал добавлен в Python 3.3
Что он означает?
Ранее, до 3.3 пакетами считались лишь директории, в которых есть файл __init__.py.
Этот файл одновременно являлся свидетельством того, что директория это Python-пакет, и служил "телом" этого пакета. То есть местом, где можно написать код, как это делается внутри модуля. Этот код исполняется в момент импорта пакета, так что его принято называть "код инициализации пакета".
Начиная с версии 3.3 Любая директория считается пакетом и Python будет пытаться использовать любую директорию для импорта.
Конечно, не любую в файловой системе, а только те что находятся в sys.path.
Это значит, что теперь __init__.py нужно делать только если:
🔸 вам требуется создать код инициализации пакета
🔸 нужна совместимость со старыми версиями Python
На мой взгляд это немного упрощает разработку, делает её чище, но с другой стороны убивает некоторую однозначность происходящего.
Например, я создал репозиторий со своей библиотекой и рядом положил код примеров или тестов.
repo_name/
my_library/
__init__.py
main.py
examples/
exam1.py
exam2.py
В этом репозитории пакетом является только my_library, остальные директории это не пакеты, это просто дополнительный код в файлах. Директория examples не добавлена в sys.path, в ней нет рабочих модулей. Но если она лежит рядом с my_library, то Python вполне сможет импортнуть из неё модули, так как посчитает что examples это валидный пакет.
Конечно, пример несколько надуманный. Никто не будет добавлять корень репозитория в sys.path. Но, я думаю, суть ясна. Иногда директория это просто директория а не пакет!
#basic#pep
😍Новая игра — Rewinding Cadence
😍Rewinding Cadence — это экшен-RPG с открытым миром, в основе сюжета которой лежит механика временной петли.
😍 Основные детали:
• Аниме-стилистика и элементы 2D-графики.
• Сражения с участием духовных спутников, которых можно прокачивать.
• Механики планирования, полётов и передвижения на ховербордах.
• История реагирует на решения игрока через систему бросков d20 (как в Dungeons & Dragons).
😍 Официальный сайт: тык
💬 Так-так-так, а это уже кое-что интересненькое.
[Тег: #RC]
😍 Больше в iNFO Daily
Hope meaning in my word's "Light"
We just walking under the tunnel because we know we can find a light end of this tunnel. Life is equal to tunnel so don't stop. Keep walking.
#review#RC#hope
New RC Build Available!
Version: CPH2649_16.0.2.402
Region: IN
Update:
Now available for EU
🔔 Updates: @OnePlus13Series
💬 Discussion: @OnePlus13SeriesChatRoom
#OTA#RC
*Perhaps my soul is dark*
I am drawn into your world
That you so darkly carved
With your emptiness
Perhaps my soul is dark
Perhaps I like black holes
Perhaps I hope to emerge
On the other side as bright
As a brilliant.radiant star
That lights up a million worlds
Im sorry Jasmine
I am drawn to your dark nudity
The poverty of your humanity
Perhaps my soul is dark
Perhaps I like the thorns better
Than the roses and the fragrance
Of blood better than jasmine
Perhaps I want to break through
The darkest night pouring into
A zig zillion shards of light
silently making a new dawn
#review, #RC, #Everyone, #poetry
#Italia#Europee
Sono 16 i partiti ammessi alle elezioni europee, nessuna ha dovuto raccogliere le 150.000 firme necessarie, vediamoli insieme:
-#M5S
-#PD-#A1MDP-#DemoS
-#Lega-#MNS
-#FI (Insieme a #UdC-#MpA-#IDeA-#CP-#NPSI-#EpI-#RC-#PLI)
-#FdI (Insieme a #DI-#DiventeràBellissima)
-#LS (#SI-#PRC-#AET-#ÉViva)
-#EV (#FdV-#Possibile)
-#PiùE-#IiC (Insieme a #PSI-#PRI)
-#PdF-#AP
I partiti sottostanti sono stati ammessi anche senza avere né rappresentanza in parlamento né senza aver raccolto firme
-#PC (Partito Comunista)
-#CPI-#DU (CasaPound-Destre Unite)
-#FN (Forza Nuova)
-#PPI (Popolari Per l'Italia)
-#PPIT (Partito Pirata)
-#PAI (Partito Animalista Italiano)
-#PPA (Popolo Partite IVA)
Nelle tre regioni #ValleDAosta, #TrentinoAltoAdige e in #FVG troviamo diverse alleanze:
-#ApE con il PD (#UV-#UVP-#ALPE-#EPAV-#SA)
-#SVP-#PATT e #SSk con FI
-#LAltoAdigeNelCuore con FdI
-#VGV con #EV
-#TK con #PiùE
@NewsDalMondoo