TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #125 · 29 јул.

В PEP509 описано добавление в структуру данных словаря приватного поля с версией. Что это за версия? Она нужна для ускорения проверки изменений в словаре. Разные механизмы должны следить за целостностью данных (например неймспейса, который суть словарь). Чтобы каждый раз не проверять изменился ли словарь, мы просто можем проверить его версию. На стороне реализации С в структуру данных словаря добавлена приватная переменная ma_version_tag, которая изменяется всякий раз при изменении словаря. clear() pop(key) popitem() setdefault(key, value) __delitem__(key) __setitem__(key, value) update(...) Если вызван один из этих методов, то версия изменяется. Версия это не хеш и не ID. Каждый словарь имеет свою уникальную версию, даже два одинаковых или два пустых словаря. Как посмотреть версию? Из самого словаря не получится. Есть код в тестах для получения свойства ma_version_tag, используется для прогонки тестов. Чтобы попробовать этот код достаточно повторить то что написано в тестах. Для Windows следует добавить директорию Lib\test в PYTHONPATH. >>> import _testcapi >>> d1 = {} >>> d2 = {} >>> _testcapi.dict_get_version(d1) 12083 >>> _testcapi.dict_get_version(d2) 12099 Интересно то, что версия изменится даже если данные будут одинаковыми. Главное сам факт изменения. >>> d = {1:2} >>> _testcapi.dict_get_version(d) 12200 >>> d[1] = 2 >>> _testcapi.dict_get_version(d) 12239 Таким образом мы можем узнать а не пытался ли кто-то что-либо сделать с нашим словариком? Жаль только нет стандартного способа получения версии (или я не нашел?). Я думаю применение нашлось бы) #pep#tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #tricks

当前筛选 #tricks清除筛选
sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags