मैं निम्नलिखित उदाहरण को नहीं समझता, कह सकता हूं कि मेरे पास ये कार्य हैं:
# 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