Ֆունկցիաներ՝ ֆունկցիաների ներսում

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() նոր ֆունկցիա, որը գործում է որպես գործիք, որպեսզի բոլոր 3 անունների համար չկրկնենք 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