Замыкания в языке Python
начал разбираться в теме замыкания в языке Python, и выполнил такое вот задание: используя замыкания функций, объявите внутреннюю функцию, которая преобразует строку
из списка целых чисел, записанных через пробел, либо в список, либо в кортеж. Тип
коллекции определяется параметром type внешней функции. Если type = 'list' , то
используется список, иначе – кортеж. Далее, на вход программы поступает две строки:
первая – это значение для параметра type; вторая – список целых чисел, записанных через пробел. С помощью реализованного замыкания преобразовать эту строку в
соответствующую коллекцию. Результат работы замыкания выведите на экран.
Сам код:
def func(type: str):
def inner(value):
gen = (e for e in value.split())
if type == 'list':
return list(gen)
return tuple(gen)
return inner
if __name__ == '__main__':
print(func('list')('1 2 3 4'))
print(func('tuple')('1 2 3 4 5'))
Хотелось бы узнать, правильно ли понял тему и есть ли ошибки в коде. Спасибо.
Ответы (1 шт):
ваш код работает правильно, особо добавить нечего, просто предложу немного другой вариант исполнения:
def func(type_: str):
t = list if type_=='list' else tuple
def inner(value):
return t(value.split())
return inner
to_list = func('list')
to_tuple = func('tuple')
to_set = func('set') # !
print(to_list('1 2 3 4'), to_tuple('5 6 7 8'), to_set('9 10 11 11'), sep='\n')
результат:
['1', '2', '3', '4']
('5', '6', '7', '8')
('9', '10', '11', '11')