python - *args and **kwargs? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 12 जवाब

इसलिए मुझे * आर्ग्स और ** क्वार्गेस की अवधारणा।

अब तक मैंने यह सीखा है कि:

  • * आर्ग्स = आर्गुमेंट्स की सूची -as स्थैतिक तर्क
  • ** kwargs = शब्दकोश - जिनकी कुंजी अलग कीवर्ड तर्क बनती है और इन तर्कों के मूल्य बन जाते हैं।

??

ईमानदारी से मैं समझ नहीं पा रहा हूं और किस प्रोग्रामिंग कार्य के लिए नहीं मिलता है यह उपयोगी होगा। (मुझे यकीन है कि वहाँ है, लेकिन मैं इसे समझ नहीं पा रहा हूं।)

हो सकता है:

मुझे लगता है कि एक समारोह के तर्कों के रूप में सूचियों और शब्दकोशों को दर्ज करें एक वाइल्डकार्ड के रूप में एक ही समय है, तो क्या मैं किसी भी तर्क को पारित कर सकता हूं?

क्या यह एक सरल उदाहरण है कि कैसे * args और ** kwargs उपयोग किया जाता है?

इसके अलावा मैं ट्यूटोरियल जो केवल "*" और एक चर नाम का इस्तेमाल किया है।

क्या * आर्ग्स और ** kwargs सिर्फ एक प्लेसहोल्डर है या आप बिल्कुल * args और का उपयोग करते हैं * कोड में

नाम * आर्ग्स और ** kwargs केवल सम्मेलन से ही हैं लेकिन उन्हें इस्तेमाल करने के लिए कोई कठोर आवश्यकता नहीं है।

आप * args का उपयोग करेंगे जब आप सुनिश्चित नहीं हैं कि आपके फ़ंक्शन में कितने तर्क दिए जा सकते हैं, यानी यह आपको अपने फ़ंक्शन पर एक मनमाना संख्याओं को तर्क देता है। उदाहरण के लिए:

  & gt; & gt; & gt; Def print_everything (* आर्ग्स): गिनती के लिए, गणना (अरग) में चीज: ... प्रिंट ('{0}। {1}' प्रारूप (गणना, चीज़)) ... & gt; & gt; & gt; इसी तरह,  ** kwargs  आप को संभालने की अनुमति देता है। नामांकित तर्क है कि आपने पहले से परिभाषित नहीं किया है: 

  & gt; & gt; & gt; Def table_things (** kwargs): ... नाम के लिए, kwargs.items () में मान: ... प्रिंट ('{0} = {1}' प्रारूप (नाम, मान)) ... & gt; & gt ; & gt; तालिका = चीजें (सेब = 'फल', गोभी = 'सब्जी') गोभी = सब्जी सेब = फल  

आप इन्हें नामित तर्कों के साथ भी उपयोग कर सकते हैं। स्पष्ट तर्कों को पहले मान मिलते हैं और फिर सब कुछ * args और ** kwargs के पास हो जाता है नामांकित तर्क सूची में सबसे पहले आते हैं। उदाहरण के लिए:

  def table_things (titlestring, ** kwargs)  

आप दोनों एक ही फ़ंक्शन परिभाषा में भी उपयोग कर सकते हैं लेकिन * args < / Code> ** kwargs से पहले होनी चाहिए।

आप कॉल करने पर भी * और ** सिंटैक्स का उपयोग कर सकते हैं एक समारोह। उदाहरण के लिए:

  & gt; & gt; & gt; Def print_three_things (a, b, c): ... प्रिंट ('a = {0}, b = {1}, c = {2}'। प्रारूप (a, b, c)) ... & gt; & gt ; & gt; Mylist = ['aardvark', 'बम्बू', 'बिल्ली']> gt; & gt; & gt; जैसा कि आप इस मामले में देख सकते हैं यह सूची की सूची (या ट्यूपल) लेता है और इसे अनपैक करता है। इस से यह उन कार्यों के तर्कों से मेल खाता है। बेशक, फ़ंक्शन परिभाषा में और फ़ंक्शन कॉल में आपके पास  *  हो सकता है। 


Comments

Popular posts from this blog

Eclipse CDT variable colors in editor -

AJAX doesn't send POST query -

wpf - Custom Message Box Advice -