Библиотека Python разработчика | Книги по питону
19.2K subscribers
1.06K photos
401 videos
82 files
1.01K links
Полезные материалы для питониста по Фреймворкам Django, Flask, FastAPI, Pyramid, Tornado и др.

По всем вопросам @evgenycarter

РКН clck.ru/3Ko7Hq
Download Telegram
Генераторы — один из самых полезных механизмов в Python. Они имеют множество применений, одно из которых — создание менеджеров контекста. Обычно нужно вручную определять магические методы __enter__ и __exit__, но декоратор @contextmanager из модуля contextlib делает это намного удобнее:


from contextlib import contextmanager

@contextmanager
def atomic():
print('BEGIN')

try:
yield
except Exception:
print('ROLLBACK')
else:
print('COMMIT')

Теперь atomic — это менеджер контекста, который можно использовать следующим образом:



In : with atomic():
...: print('ERROR')
...: raise RuntimeError()
...:
BEGIN
ERROR
ROLLBACK

Кроме того, @contextmanager позволяет использовать его как декоратор, так и менеджер контекста.


In : @atomic()
...: def ok():
...: print('OK')
...:
In : ok()
...:
BEGIN
OK
COMMIT


Мы в MAX

👉@BookPython
👍2❤‍🔥1🤡1
Вредные советы python разработчику


l=[['a', 'b', 'c'], ['1', '2'], ['#']]
sum(l, [])


В Python можно выпрямить вложенные списки с помощью... функции sum(). Вот код (выполнять, пока никто не видит):

Дело в том, что sum() принимает первым аргументом итерируемый объект, а вторым — значение, с которого начинается операция. По умолчанию это 0, но если указать пустой список [], то sum() начнёт с него. Затем sum() последовательно применяет операцию сложения к элементам первого аргумента, начиная со значения второго аргумента. В случае списков это означает конкатенацию.

Мы в MAX

👉@BookPython
👍6