Подразумеваемые неймспейсы или неявные пакеты.
Этот функционал добавлен в 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
😄Thought
➖➖➖➖➖➖
🔘As a verb thought is the past tense of 'think':
🔜I thought about the problem for a little while.
🔘 an idea or plan.
🔜I've had a thought about what we should do next.
As a plural noun, thoughts can be:
🔘our opinions or beliefs.
🔜What are your thoughts on the best way to learn English?
As an uncountable noun, thought can mean:
🔘‘careful consideration’.
🔜We need to give more thought to this project.
#Thought👨🏫@America
➖➖➖➖➖➖➖➖➖➖➖➖
🆕 Crypto News @Money
😁 Crypto Game @Egame
🇺🇸 US News @America
🇯🇵 Japan News @Japan
🇦🇪 UAE News @Dubai
▶️ Popular Movies @Videos
😜 Best Funny Video @Funnys
前些日子在網上衝浪(不知道現在還有沒有人在用 surfing the Internet / surf on the Internet 這樣的說法)時,發現了 NirSoft 這個由開發人員 Nir Sofer 所創建的個人網站。
根據他在關於頁面的說法,這個網站最初建立於 2001 年,用來陳列自己開發的小工具;起初託管在一些免費服務上,後來隨著廣告與惡意使用者逐漸增多,在 2004 年購買了自己的網域。
裡面有許許多多採用 C++ 開發的 Windows 實用小程式,並且據作者所說,這些程式具備可攜性(portable),大多情況下不需要安裝且不會存取註冊表;裡面 Network Monitoring, Internet Related Utilities, Command-Line Utilities, Programmer Tools 和 System Utilities 的部分可以尋尋寶。
作者還有維護一個部落格,目前最新的一篇文章是 2023/08/19 發佈的;長年來都在業餘時間開發小工具,還能樂此不疲且碼耕不輟,這應該是許多開發者想活成的樣子了。
#Thought
在 Do You Want To Be a News Source? Just Change Your Account Name 一文中,提到了過去幾年在 Twitter 上出現的幾個虛假新聞帳號案例,這類帳號通常是由既有的帳號修改使用者名稱(username)以及帳號名稱,而非創建新的使用者,這樣的操作手法需要透過永久 UID 來辨認(可以透過 TwitterID 這個工具查詢與反查)。
__
這個電子報還有其他不錯的文章,比如 How to Find Swarms of Fake Twitter Followers 一文,表示這類假帳號通常具備兩個特徵:
1. 短時間內獲得數百或數千名的假帳號關注
2. 假帳號通常會在固定的時間或時間範圍內創建帳號
文中有提供一段簡單的 Python 程式來辨別上述的特徵,但需要具備 Twitter 開發者帳號並啟用 API 來操作,這在馬總搞了一堆奇妙的操作後,可能得另謀他法了…
#Thought