python - कीवर्ड पैरामीटर के रूप में पायथन में फ़ंक्शन में एक शब्दकोश को पास करना





function dictionary parameters keyword (5)


अंत में अपने लिए यह पता लगाया। यह आसान है, मैं सिर्फ शब्दकोश ऑपरेटर को अनपैक करने के लिए ** ऑपरेटर खो रहा था

तो मेरा उदाहरण बन जाता है:

d = dict(p1=1, p2=2)
def f2(p1,p2):
    print p1, p2
f2(**d)

मैं एक शब्दकोश का उपयोग कर अजगर में एक समारोह को कॉल करना चाहता हूं।

यहां कुछ कोड दिया गया है:

d = dict(param='test')

def f(param):
    print param

f(d)

यह प्रिंट {'param': 'test'} लेकिन मैं इसे सिर्फ test प्रिंट करना चाहता हूं।

मैं इसे अधिक पैरामीटर के लिए समान रूप से काम करना चाहता हूं:

d = dict(p1=1, p2=2)
def f2(p1,p2):
    print p1, p2
f2(d)

क्या यह संभव है?




यहाँ जाओ - किसी भी अन्य पुनरावर्तनीय काम करता है:

d = {'param' : 'test'}

def f(dictionary):
    for key in dictionary:
        print key

f(d)



कुछ अतिरिक्त विवरण जो जानने में मददगार हो सकते हैं (मेरे पढ़ने के बाद प्रश्न और गए और परीक्षण किए गए):

  1. फ़ंक्शन में पैरामीटर हो सकते हैं जो शब्दकोश में शामिल नहीं हैं
  2. आप पहले से ही शब्दकोश में मौजूद पैरामीटर को ओवरराइड नहीं कर सकते हैं
  3. शब्दकोश में पैरामीटर नहीं हो सकते हैं जो फ़ंक्शन में नहीं हैं।

प्रत्येक के उदाहरण:

def test(a=4, b=2):
    print a, b

संख्या 1: फ़ंक्शन में पैरामीटर हो सकते हैं जो शब्दकोश में शामिल नहीं हैं

In[6]: mydict = {'a': 100}
In[7]: test(**mydict)
100 2

संख्या 2: आप पहले से ही शब्दकोश में मौजूद पैरामीटर को ओवरराइड नहीं कर सकते हैं

In[8]: mydict = {'a': 100, 'b': 200}
In[9]: test(a=3, **mydict)

TypeError: test() got multiple values for keyword argument 'a'

संख्या 3: शब्दकोश में पैरामीटर नहीं हो सकते हैं जो फ़ंक्शन में नहीं हैं।

In[10]: mydict = {'a': 100, 'b': 200, 'c': 300}
In[11]: test(**mydict)

TypeError: test() got an unexpected keyword argument 'c'



पायथन में, इसे "अनपॅकिंग" कहा जाता है, और आप tutorial में इसके बारे में थोड़ा सा पता लगा सकते हैं। इसका दस्तावेज बेकार है, मैं सहमत हूं, विशेष रूप से यह कि कैसे कल्पनात्मक रूप से उपयोगी है।




उन लोगों के लिए जो कम से कम कामकाजी उदाहरण पसंद करते हैं, इस इंटरैक्टिव Python सत्र पर ध्यान दें :

>>> def f():
...   yield 1
...   yield 2
...   yield 3
... 
>>> g = f()
>>> for i in g:
...   print i
... 
1
2
3
>>> for i in g:
...   print i
... 
>>> # Note that this time nothing was printed




python function dictionary parameters keyword