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

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

Насколько это гениальное идиотское изобретение, использовать функцию (как пассивный объект) в качестве семантического флага "любой"?
amarao: (Default)
Если бы у меня была возможность поменять одну вещь в питоне, я бы поменял то, как работают '"""', и сделал бы их yaml-подобными, с возможностью сохранять отступы.

У всех остальных вещей есть глубокие причины, но тут всё просто - не додумали. В то время не было ямла с восхитительным `foo:|`, и люди ещё не умели справляться с inline indentation.
amarao: (Default)
def foo(bar):
a = yield bar
return a

Продолжаю думать. Очень серьёзное открытие. Я не знаю, когда его завезли, раньше yield просто трансформировал функцию в генератор. А теперь можно конструировать генераторы прямо в функции. Звучит офигенно.

(По мотивам https://github.com/suned/stateless)
amarao: (Default)
Вот я прям питон начинаю не любить. Казалось бы, утиная типизация и всеобщая приятность. Никакого фашизма, всё можно.

А вот вам простая задачка, которую на rust'е generic'и решают в одну строчку, а на питоне я не знаю как (в разумные усилия).

Есть функция, которая читает вывод (утилиты) и возвращает распашенный json. Она достаточно generic, чтобы в зависимости от вывода утилиты вернуть list или dict.

Теперь я хочу добавить фэнсервиса - если вывод пустой, то возвращать пустой элемент (список или словарь). Как? КАК?

>>> class foo(dict,list):
... pass
...
Traceback (most recent call last):
File "", line 1, in
TypeError: multiple bases have instance lay-out conflict
amarao: (Default)

Проверка, что в командной строке есть аргумент, начинающийся с --ansible-inventory

if any([a.startswith("--ansible-inventory") for a in sys.argv]):
    ...
amarao: (Default)
Питон местами хорош, но местами вызывает глубокую неприязнь из-за крайне низкой гигиены.

>>> float(math.nan) is math.nan
True
>>> float(1/math.nan) is math.nan
False

(Если кто-то не понял - я негодую, что питон не осилил сделать math.nan синглтоном, как None).
amarao: (Default)
>>> type(type(None))(repr(None),(None, None),{None:None})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

Profile

amarao: (Default)
amarao

August 2025

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 7th, 2025 11:39 pm
Powered by Dreamwidth Studios