ऐसा लगता है कि पाइथन के कई पहलू सिर्फ कार्यक्षमता के डुप्लिकेट हैं। क्या मैं पावरॉन के भीतर kwargs और dict में देख रहे अनावश्यकता से परे कुछ अंतर है?पायथन 3.2 में ** kwargs और dict के बीच क्या अंतर है?
उत्तर
तर्क में एक फर्क खोल (कई लोगों kwargs
का उपयोग जहां) और dict
गुजर तर्क के रूप में है:
तर्क unpacking का उपयोग करना:
# Prepare function def test(**kwargs): return kwargs # Invoke function >>> test(a=10, b=20) {'a':10,'b':20}
के रूप में एक dict पासिंग एक तर्क:
# Prepare function def test(my_dict): return my_dict # Invoke function >>> test(dict(a=10, b=20)) {'a':10,'b':20}
मतभेद ज्यादातर हैं:
- पठनीयता (आप बस कीवर्ड तर्क पारित कर सकते हैं, भले ही वे स्पष्ट रूप से परिभाषित नहीं कर रहे थे),
- लचीलापन (आप कुछ कीवर्ड तर्क स्पष्ट रूप से समर्थन कर सकते हैं और बाकी
**kwargs
का प्रयोग करके) , - तर्क unpacking, आप वस्तु "युक्त" तर्कों (जो कम महत्वपूर्ण है, सामान्य रूप में अजगर के रूप में मान लिया गया डेवलपर्स जानते हैं कि वे क्या कर रहे हैं, जो एक अलग विषय है) के लिए अप्रत्याशित परिवर्तन से बचने में मदद करता है
अनपॅकिंग के साथ, कुंजियों को वैध पहचानकर्ता होने की आवश्यकता है –
@gnibbler: आप सही हैं, +1। मैं पूरी तरह से याद किया। एक उदाहरण के रूप में मैं 'टेस्ट ({0: 10,' 0 ': 20})' (जो '{0: 10, '0': 20}') वापस कर देगा, तर्क को अनपॅकिंग के साथ प्रतिस्थापित करना मुश्किल है। – Tadeck
यह सही है कि ज्यादातर मामलों में आप केवल डिक्ट्स और ** kwargs का आदान-प्रदान कर सकते हैं।
उदाहरण के लिए:
my_dict = {'a': 5, 'b': 6}
def printer1(adict):
return adict
def printer2(**kwargs):
return kwargs
#evaluate:
>>> printer1(my_dict)
{'a': 5, 'b': 6}
>>> printer2(**my_dict)
{'a': 5, 'b': 6}
kwargs आप और अधिक लचीलापन यदि आप इसे अन्य तर्कों के साथ गठबंधन के साथ
हालांकि:
def printer3(a, b=0, **kwargs):
return a,b,kwargs
#evaluate
>>> printer3(**my_dict)
(5, 6, {})
- 1. पायथन: __builtin__ और __builtins__ के बीच क्या अंतर है?
- 2. सक्रिय पायथन और पायथन के बीच क्या अंतर है?
- 3. पायथन में, ".append()" और "+ = []" के बीच क्या अंतर है?
- 4. पायथन में सूचियों और टुपल्स के बीच क्या अंतर है?
- 5. पायथन में सेट और सूचियों के बीच क्या अंतर है?
- 6. पायथन में {} और [] के बीच क्या अंतर है?
- 7. पाइथन dict और tr1 के बीच का अंतर :: C++
- 8. स्वयं है .__ dict __। अद्यतन (** kwargs) अच्छी या खराब शैली?
- 9. ट्विस्ट (पायथन) - सहयोग और सहवास के बीच क्या अंतर है?
- 10. पायथन सजावट और सजावटी पैटर्न के बीच क्या अंतर है?
- 11. पायथन मल्टीप्रोसेसिंग: मानचित्र और इमेप के बीच क्या अंतर है?
- 12. django classonlymethod और पायथन क्लासमेड के बीच क्या अंतर है?
- 13. पायथन और जावास्क्रिप्ट नियमित अभिव्यक्तियों के बीच क्या अंतर है?
- 14. $ पायथन 2.7 और पायथन 3.2
- 15. उद्देश्य-सी: केई और केपपथ के बीच क्या अंतर है?
- 16. पायथन 3.2 में sys.setswitchinterval और
- 17. * args और ** kwargs का क्या अर्थ है?
- 18. स्कैपी और पायथन 3.2
- 19. शब्दकोश ऑपरेशन में जोड़ें और [] के बीच क्या अंतर
- 20. बूस्ट पायथन और पायथन 3.2
- 21. kwargs
- 22. पायथन: "if 'x' dict में" और "i i dict ['x']"
- 23. पायथन कनवर्ट्स को kwargs
- 24. मेमकेचे और पायथन शब्दकोश के बीच अंतर
- 25. पायथन: dict
- 26. # {} $ {} और% {} के बीच क्या अंतर है?
- 27. के बीच क्या अंतर है:। और: आर !?
- 28. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 29. $ और $$ के बीच क्या अंतर है?
- 30. भिन्नता और '-' के बीच क्या अंतर है?
'** kwargs' परोक्ष बनाता है * एक *' dict' वस्तु (चाबियाँ और मूल्यों के साथ लोड 'kwargs' द्वारा नामित)। यह एक डुप्लिकेट कार्यक्षमता नहीं है। –
"कई पहलुओं" पर विस्तार करें। डुप्लिकेट कार्यक्षमता क्या अन्य क्षेत्र हैं? – jdi