फ़ंक्शन के अंदर फ़ंक्शन

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() परिभाषित किया है जो एक उपयोगिता के रूप में कार्य करता है ताकि process() फ़ंक्शन में सभी तीन नामों के लिए if, else स्टेटमेंट को दोहराने से बचा जा सके।

ध्यान दें कि आंतरिक फ़ंक्शन उनके ऊपर परिभाषित सभी वेरिएबल्स तक पहुंच रखते हैं। इसलिए, हमारे उदाहरण में, फ़ंक्शन 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: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB