Решение модуля 7.13 Инди-курс программирования на Python

Модуль 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  # возвращаем итоговый результат из глобальной функции

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

2 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
liony
liony
8 месяцев назад

На предыдущем шаге мы реализовали функцию-замыкание create_accumulator

def create_accumulator(start_sum=0):
   sum = start_sum

   def accumulator(x):
       nonlocal sum
       sum += x
       return sum

   return accumulator

liony
liony
8 месяцев назад

Ваша задача создать функцию-замыкание create_accumulator

def create_accumulator():
   sum = 0

   def accumulator(x):
       nonlocal sum
       sum += x
       return sum

   return accumulator

2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x