amarao: (Default)
[personal profile] amarao
Мне нужен атом для обозначения "all" (или "any", мол, предназначено для всех вариантов). Я могу сделать строку "all" как атом (нишу), но это выглядит как-то криво.

И вот идея. Просто any. Есть такая функция в питоне. У неё есть id. Соответственно, foo = any (или даже, потому что функция all тоже есть).

Насколько это гениальное идиотское изобретение, использовать функцию (как пассивный объект) в качестве семантического флага "любой"?

Date: 2024-11-09 09:17 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Мне кажется, это красивое решение.

Date: 2024-11-09 12:11 pm (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Я так делал. DSL для того, чтобы в тестах, имея на входе структуру данных, полученную путём json.loads, проверить её на соответствие шаблону. Не на точное глубокое равенство, а на наличие отдельных ключей с опциональным игнорированием всех неуказанных ключей.

assert response_body in Pattern({
    "some": 42,
    "other": any,
    "thing": re.compile(r"[0-9]+")
    any: any})

эквивалентно с точностью до сообщений:

assert isinstance(responsebody, dict)
assert "some" in response_body and response_body["some"] == 42
assert "other" in response_body
assert "thing" in response_body and re.fullmatch(r"[0-9]+", response_body["thing"])

Разумеется, Pattern._, заранее выставленное в уникальный объект, функционально работало бы ничуть не хуже, но рябило бы в глазах при чтении.

Ещё из синтаксически вкусных встроенных в питон значений — ... (aka Ellipsis).

Edited Date: 2024-11-09 12:17 pm (UTC)

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 11:31 am
Powered by Dreamwidth Studios