Элементы языка Python
Материал из Xgu.ru
Содержание |
[править] Вопросы и ответы
[править] Зачем нужен with?
with это хитрая вещь, которая позволяет значительно сократить конструкции такого вида
con1 = users_db(uid) con2 = users_db(uid) con1.startTransaction() con2.startTransaction() try: con1.delete('foo', id=1) con2.delete('bas', id=1) except: con1.rollback() con2.rollback() raise else: con1.commit() con2.commit()
до такого:
con1 = users_db(uid) con2 = users_db(uid) with transaction(con1, con2): con1.delete('timelines', id=1) con2.delete('timelines', id=1)
То есть, основной её смысл в том, что мы можем не беспокоиться о том, что нам нужно закрыть транзакцию, или откатить её, в случае, если что-нибудь пошло не так.
Эта задача возлагается на плечи функции (или класса), который передаётся в качестве аргумента with.
With автоматически позаботится о том, чтобы выполнить закрывающую часть функции, даже если with покинули из-за исключения или как-то иначе:
@contextmanager def for_with(): try: print 1 yield finally: print 3 def func(): with for_with(): print 2 return False
Подробнее:
- PEP 343, the "with" statement (англ.)
- What is the python “with” statement designed for? (англ.)
- Understanding Python's "with" statement (англ.)
- Python's with statement (англ.)
- (Launchpad-dev) The with statement (англ.)
Ещё надо разобраться с понятием contextmanager, поскольку оно имеет к with самое непосредственное отношение:
[править] Обработка исключений
- Python Exception Handling Techniques (англ.) --- обработка исключений в Python
[править] Дополнительная информация
[править] Примечания
Информация о Python на xgu.ru | ||
---|---|---|
Реализации | Cython • Psyco • PyPy | |
Веб-фреймворки | Django • Flask • Zope | |
IDE | Pydev • NetBeans | |
Курсы | Python для сетевых инженеров | |
Другое | aalib • ctypes • gevent • mpmath • pjsua • Pandas • pyparsing • virtualenv • GMPY • IPython • Jinja2 • Python и Vim • Работа с модулями в Python • SWIG • Scapy • SciPy • Работа с датой и временем в Python • Python как shell • Web и Python • Алгоритмы, сложные структуры данных и дискретная математика в Python • Анализ кода Python • Интеграция Python с другими языками • Объекты и классы в Python • Оформление кода Python • Параллелизм и конкурентное исполнение в Python • Профайлинг в Python • Работа с базами данных в Python • Работа с операционной системой в Python • Работа с сетью в Python • Работа с текстами в Python • Работа с файлами в Python • Сравнение Python с другими языками • Тестирование в Python • Типы в Python • Элементы функционального программирования в Python • Элементы языка Python |