मैं निम्न उदाहरण समझ में नहीं आता के साथ एक और कार्य करने के लिए तर्क kwargs, मान लीजिए कि मैं इन कार्यों:पास ** ** kwargs
# python likes
def save(filename, data, **kwargs):
fo = openX(filename, "w", **kwargs) # <- #1
fo.write(data)
fo.close()
# python doesnt like
def save2(filename, data, **kwargs):
fo = openX(filename, "w", kwargs) # <- #2
fo.write(data)
fo.close()
def openX(filename, mode, **kwargs):
#doing something fancy and returning a file object
# 1 सही समाधान और # 2 गलत एक क्यों है ? **kwargs
मूल रूप से एक निर्देश है, इसलिए यदि मैं ओपनएक्स को तर्क पारित करना चाहता हूं तो मुझे लगता है कि सही तरीका **
के बिना होगा और केवल निर्देश दे रहा है। लेकिन पाइथन स्पष्ट रूप से दूसरे की तरह नहीं है और मुझे बताता है कि मैंने 2 तर्कों के बजाय 3 दिया। तो इसके पीछे क्या कारण है?
मुझे आश्चर्य है कि आप इसे कोड में '** args' क्यों कहते हैं। यह संभवतः सबसे खराब संभव नाम है क्योंकि लोग इसे '* args' –
' के साथ भ्रमित करेंगे, ठीक है, मैं वास्तव में कभी भी * args का उपयोग नहीं करता, इसलिए मैं ** args ^^ का उपयोग करता हूं, लेकिन अच्छी तरह से मैं इसे संशोधित कर सकता हूं। –