python करण अजगर में नामित चर तर्कों को पास करना




जालीदार अजगर (3)

कहो मेरे पास निम्न विधियां हैं:

def methodA(arg, **kwargs):
    pass

def methodB(arg, *args, **kwargs):
    pass

विधि में मैं क्वार्ग से गुजरने के लिए विधि बी को कॉल करना चाहता हूं। हालांकि, ऐसा लगता है कि यदि मैं methodA को इस प्रकार परिभाषित करता methodA , तो दूसरा तर्क नामित चर तर्कों के बजाय स्थितीय के रूप में पारित किया जाएगा।

def methodA(arg, **kwargs):
    methodB("argvalue", kwargs)

मैं कैसे सुनिश्चित करूं कि विधि ए में ** क्वार्ग विधि बी को ** के रूप में पारित कर दिया गया?


क्वार्ज वेरिएबल से पहले तारांकन करें। यह पाइथन को वेरिएबल पास करता है (जो कि एक शब्दकोश माना जाता है) के रूप में कीवर्ड तर्क।

methodB("argvalue", **kwargs)

एक तरफ के रूप में: तरीकों के बजाय फ़ंक्शन का उपयोग करते समय, आप फ़नकास्टल पर्टीटियल का उपयोग भी कर सकते हैं:

import functools

def foo(arg, **kwargs):
    ...

bar = functools.partial(foo, "argvalue")

अंतिम पंक्ति एक समारोह "बार" को परिभाषित करेगी, जिसे बुलाए जाने पर, "आर्गवैल्यू" पर सेट किए गए पहले तर्क के साथ foo को कॉल करेगा और अन्य सभी फ़ंक्शंस जिन पर पारित किया गया है:

bar(5, myarg="value")

कॉल करेंगे

foo("argvalue", 5, myarg="value")

दुर्भाग्य से यह विधियों के साथ काम नहीं करेगा।


कुछ प्रयोग और मुझे यह पता लगा:

डीफ़ पद्धति ए (आरजीआर, ** क्वार्ग): विधिबी ("आर्गवैल्यू", ** क्वार्ग्स)

अब स्पष्ट लगता है ...





variadic-functions