Можно ли использовать оператор with
в анонимных функциях Python?Например, у меня есть функция, которая записывает 1
в файл:
def write_one(filename):
with open(filename, 'wt') as fp:
fp.write('1')
Но эта функция должна быть организована в dict:
my_functions = {
....
}
Очевидно, я могу написать этооператор для добавления этой функции к dict:
my_functions['write_one'] = write_one
Но проблема в том, что имя write_one
все еще существует в текущей области.Как я могу ввести анонимную функцию, не загрязняя текущее пространство имен?
Для простых функций я могу использовать lambda
.Для слегка сложных функций я могу вернуть кортеж для выполнения нескольких операторов (точнее, выражений).Но я не нашел способ умно использовать lambda
, чтобы он мог работать с with
операторами.Если это невозможно, то где это сказано в документации?
Решение с del write_one
мне не нравится.Я не хочу, чтобы это имя вообще вводилось в текущем пространстве имен.
Одним словом, я хочу что-то вроде этого:
my_functions['write_one'] = def(filename):
with open(filename, 'wt') as fp:
fp.write('1')
Это немного неловко сПравила Python, основанные на отступах, я знаю.Но он делает свою работу.