कभी-कभी आप चाहते हैं कि फ़ंक्शन के आर्गुमेंट्स को उनके नाम से निर्दिष्ट किया जाए, जिससे उनकी स्थिति की परवाह किए बिना यह स्पष्ट हो जाता है कि प्रत्येक आर्गुमेंट क्या दर्शाता है। पाइथन में, इन आर्गुमेंट्स को कीवर्ड आर्गुमेंट्स कहा जाता है। कीवर्ड-केवल आर्गुमेंट्स भी इसी तरह हैं, लेकिन एक विशेष मोड़ के साथ: उन्हें केवल कीवर्ड द्वारा ही प्रदान किया जा सकता है, कभी भी स्थिति द्वारा नहीं।
कीवर्ड-केवल आर्गुमेंट्स वाले फ़ंक्शन को परिभाषित करने के लिए, आप फ़ंक्शन सिग्नेचर में * प्रतीक का उपयोग करते हैं। * के बाद आने वाले किसी भी आर्गुमेंट को केवल उनके कीवर्ड द्वारा ही प्रदान किया जा सकता है।
मान लीजिए हमारे पास एक फ़ंक्शन है जो आयत का क्षेत्रफल गणना करता है। इसे दो आर्गुमेंट्स की आवश्यकता है: length और width। इसके अलावा, यह एक वैकल्पिक बूलियन आर्गुमेंट rounded को स्वीकार कर सकता है, यह तय करने के लिए कि सटीक क्षेत्रफल (दशमलव के साथ) लौटाया जाए या एक गोल किया हुआ क्षेत्रफल (बिना दशमलव के)। हम चाहते हैं कि rounded एक कीवर्ड-केवल आर्गुमेंट हो, ताकि फ़ंक्शन को कॉल करते समय किसी भ्रम से बचा जा सके:
def rectangle_area(length, width, *, rounded=False):
area = length * width
return round(area) if rounded else area
print(rectangle_area(5.3, 4.2)) # 22.26 प्रिंट करता है, rounded प्रदान नहीं किया गया है, इसलिए यह डिफ़ॉल्ट रूप से False होता है
print(rectangle_area(5.3, 4.2, rounded=True)) # 22 प्रिंट करता है, rounded प्रदान किया गया है और True पर सेट है
print(rectangle_area(5.3, 4.2, True)) # त्रुटि! rounded को कीवर्ड द्वारा प्रदान करना आवश्यक है।
print(rectangle_area(5.3, 4.2, False)) # त्रुटि! rounded को कीवर्ड द्वारा प्रदान करना आवश्यक है।
print(rectangle_area(length=5.3, width=4.2, rounded=True)) # 22 प्रिंट करता है
हम इस फ़ंक्शन को length और width के लिए स्थितीय आर्गुमेंट्स का उपयोग करके, और rounded के लिए कीवर्ड आर्गुमेंट का उपयोग करके कॉल कर सकते हैं। यदि कोई तीसरे आर्गुमेंट को स्थिति द्वारा प्रदान करने की कोशिश करता है, तो एक त्रुटि उत्पन्न होगी।
ध्यान दें कि आप अभी भी स्थितीय आर्गुमेंट्स के लिए कीवर्ड सिंटैक्स का उपयोग कर सकते हैं यदि आप चाहें, क्योंकि यहां उन्हें केवल स्थितीय-केवल के रूप में परिभाषित नहीं किया गया है।
चुनौती: टेक्स्ट को दोहराएं
आपका कार्य एक फ़ंक्शन repeat_text लिखना है जो निर्दिष्ट टेक्स्ट को निश्चित संख्या में दोहराता है। फ़ंक्शन को दो आर्गुमेंट्स लेने चाहिए: text और times। text आर्गुमेंट वह टेक्स्ट स्ट्रिंग है जिसे दोहराना है और times दोहरावों की संख्या है।
times आर्गुमेंट एक कीवर्ड-केवल आर्गुमेंट होना चाहिए जिसका डिफ़ॉल्ट मान 1 है, अर्थात यदि times आर्गुमेंट प्रदान नहीं किया जाता है, तो फ़ंक्शन मूल टेक्स्ट को जैसा है वैसा ही लौटाएगा।
फ़ंक्शन को एक स्ट्रिंग लौटानी चाहिए जिसमें टेक्स्ट times बार दोहराया गया हो।
इनपुट की पहली पंक्ति में एक स्ट्रिंग text है। दूसरी पंक्ति में एक पूर्णांक times है।
फ़ंक्शन को एक स्ट्रिंग लौटानी चाहिए जो text को times बार दोहराती है।
इनपुट
आउटपुट
Hello World!
3
Hello World!Hello World!Hello World!
नोट: आउटपुट में दोहराए गए टेक्स्ट्स के बीच कोई स्पेस या अन्य विभाजक नहीं है।