Подразумеваемые неймспейсы или неявные пакеты.
Этот функционал добавлен в 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
Planning to make full use of the Vaccinated Travel Lanes this holiday season, or heading for a staycation?
Don’t forget to go through the ‘Check and Protect’ checklist for a thorough #MozzieWipeout of your home before you head off! https://go.gov.sg/dengue-checklist
Sudden rain showers are common in Singapore, so if you leave your pails or plant pots where they can collect water, do pay extra attention and drain these containers if they have collected any water.
Here’s a checklist for a thorough #MozzieWipeout: https://go.gov.sg/dengue-checklist
Have you emptied out your flower pot plates after watering your plants today? These plates tend to collect water, and can become mosquito breeding habitats if left unattended. Be sure to add emptying out the flower pot plates to your “To-do List” after watering your plants! Here’s a checklist for a thorough #MozzieWipeout: https://go.gov.sg/dengue-checklist
The annual National Dengue Prevention Campaign was launched today, to rally everyone to take urgent action to prevent mosquito breeding and a possible surge in dengue cases, amidst the continued high Aedes aegypti mosquito population, and higher circulation of less common Dengue virus serotypes.
The fight against dengue involves all of us. Let’s step up dengue prevention by doing the #MozzieWipeout regularly. go.gov.sg/mozzieproof
Planning a staycation with your SingapoRediscover vouchers? Keep yourself and your loved ones safe by going through the ‘Check and Protect’ checklist for a thorough #MozzieWipeout before your stay! https://go.gov.sg/dengue-checklist
Staying home during this COVID-19 period has brought out the green thumb in many of us. And yet, with interest comes responsibility, too! Set a daily reminder to keep your plants nourished and your home protected from dengue too: https://go.gov.sg/dengue-checklist#MozzieWipeout
The gully traps in our homes are perfect for mosquito multiplication! Cover rarely used gully traps or install anti-mosquito valves, to prevent mosquito breeding. Here’s a ‘Check and Protect’ checklist for your thorough #MozzieWipeout today: https://go.gov.sg/dengue-checklist
Do you know where are the favourite places for mosquitoes to lay their eggs?
Pails, flower pot plates/trays and ornamental vases are some of the persistent mosquito breeding habitats in homes. It’s time to search for and destroy these breeding habitats! If you’re not sure how, get started here: https://go.gov.sg/dengue-checklist#MozzieWipeout
The number of weekly dengue cases has declined by more than 50% from its peak this year. However, a 12% increase in the Aedes aegypti mosquito population was detected in the last 3 weeks.
So let’s not let our guard down; continue doing the #MozzieWipeout at least once a week and taking protective actions (go.gov.sg/stopdenguenow). You can also get regular alerts on areas with higher Aedes mosquito population and dengue clusters on myENV app (www.nea.gov.sg/myENV) with this step-by-step guide!
Think it’s impossible for mosquito eggs to hatch in your dish tray, mere inches away from your cups and plates? It certainly isn’t. All mosquitoes need is a 20 cent-sized drop of water to breed. Time to do a thorough check in your house! #MozzieWipeouthttps://go.gov.sg/dengue-checklist
Besides doing the #MozzieWipeout, take these 3 simple actions to protect yourself and your loved ones, especially if you live in a dengue cluster area: Spray, Apply, Wear. More tips here: www.nea.gov.sg/stop-dengue