Функции внутри функций

Python — очень гибкий язык, и он позволяет создавать функции практически в любом месте кода. Вы можете определить новую функцию внутри блока if, цикла for или внутри другой функции:
def process(name1, name2, name3):
    def greet(name):
        if len(name) < 5:
            print(f'Hi, {name}')
        else:
            print('The name is too long')
    greet(name1)
    greet(name2)
    greet(name3)

process('Anna', 'Bob', 'Daniel')
# Hi, Anna
# Hi, Bob
# The name is too long
Здесь мы определили новую функцию greet(), которая служит для того, чтобы не повторять операторы if и else для всех трех имен в функции process().
Обратите внимание, что вложенные функции имеют доступ ко всем переменным, определенным выше них. Поэтому в нашем примере функция greet() имеет доступ к name1, name2 и name3.

Задача

Измените функцию так, чтобы она возвращала список всех делителей переданных ей чисел. Добавьте вложенную функцию, которая возвращает список делителей для одного числа.
def divisors(*numbers):
    ...

print(divisors(4, 5))         # [1, 2, 4, 1, 5]
print(divisors(3))            # [1, 3]
print(divisors(6, 8))         # [1, 2, 3, 6, 1, 2, 4, 8]
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue