Модуль 7.13 (Замыкания в Python. Closure Python).
Ваша задача создать функцию
multiply
, которая принимает один аргумент. Функция должна запомнить это значение, и вернуть результат умножения этого числа с переданным вновь значением (см. примеры)f_2 = multiply(2) print("Умножение 2 на 5 =", f_2(5)) #10 print("Умножение 2 на 15 =", f_2(15)) #30 f_3 = multiply(3) print("Умножение 3 на 5 =", f_3(5)) #15 print("Умножение 3 на 15 =", f_3(15)) #45
def multiply(value): # объявляем функцию умножения def inner(a): # объявляем функцию которая считает произведение первого числа(введенного в первую функцию) и второго (передоенного во вторую функцию) return value*a # из второй возвращаем произведение return inner # из глобальной функции возвращаем произведение
Ваша задача создать функцию-замыкание
create_dict
, она должна сохранять в себе все значения, которые ей будут переданы причем в виде словаря. Ключами данного словаря должны быть натуральные числа, равные номеру вызова данной функции. Посмотрите пример ниже:f_1 = create_dict() print(f_1('hello')) # f_1 возвращает {1: 'hello'} print(f_1(100)) # f_1 возвращает {1: 'hello', 2: 100} print(f_1([1, 2, 3])) # f_1 возвращает {1: 'hello', 2: 100, 3: [1, 2, 3]} f_2 = create_dict() # создаем новое замыкание в f_2 print(f_2('PoweR')) # f_2 возвращает {1: 'PoweR'}Вызывая первый раз
f_1
мы создали пару1: 'hello'
, вызывая второй раз добавилась пара2: 100
. и т.д.При каждом вызове должен возвращаться словарь, хранящийся в замыкании
Необходимо только определить функцию-замыкание
create_dict
, остальное мы сделаем за вас
def create_dict(): # объявляем глобальную функцию counter = 0 # счетчик для подсчета количества введённых данных history = {} # создаем пустой список для добавления в него данных def append_hist(hist_val): # объевляем внутреннюю функцию nonlocal counter, history # делаем так, чтобы можно было их изменять внутри этой функции counter += 1 # после вызова функции к счетчику прибавляем 1 history[counter] = hist_val # в словаре в качестве ключа - значение счетчика, в качестве значения - поданную информацию в функцию return history # возвращаем результат из внутренней функции return append_hist # возвращаем итоговый результат из глобальной функции
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы
На предыдущем шаге мы реализовали функцию-замыкание
create_accumulator
def create_accumulator(start_sum=0):
sum = start_sum
def accumulator(x):
nonlocal sum
sum += x
return sum
return accumulator
Ваша задача создать функцию-замыкание
create_accumulator
def create_accumulator():
sum = 0
def accumulator(x):
nonlocal sum
sum += x
return sum
return accumulator