"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में डेकोरेटर का उपयोग करते समय फ़ंक्शन हस्ताक्षर कैसे संरक्षित करें?

पायथन में डेकोरेटर का उपयोग करते समय फ़ंक्शन हस्ताक्षर कैसे संरक्षित करें?

2025-03-24 को पोस्ट किया गया
ब्राउज़ करें:396

] हालांकि, वे कभी -कभी मूल फ़ंक्शन के हस्ताक्षर को अस्पष्ट कर सकते हैं। यह प्रलेखन, डिबगिंग और स्वचालित उपकरणों के लिए समस्याग्रस्त हो सकता है। def g (*args, ** kwargs): args = [int (x) X के लिए args] kwargs = तानाशाही ((k, int (v)) k के लिए, v kwargs.items ()) वापसी f (*args, ** kwargs) G

How to Preserve Function Signatures When Using Decorators in Python? को वापस करें, जबकि सजावट अपेक्षित रूप से काम करती है, सजाए गए फ़ंक्शन के हस्ताक्षर को "

*kwargs" के साथ बदल दिया जाता है, मूल तर्कों के बारे में जानकारी खोना। संतोषजनक:

मैन्युअल रूप से हस्ताक्षर को डॉकस्ट्रिंग में कॉपी करना।

प्रत्येक विशिष्ट हस्ताक्षर के लिए एक नया डेकोरेटर बनाना। एक सुरुचिपूर्ण समाधान:

आयात डेकोरेटर @डेकोरेटर def args_as_ints (f, *args, ** kwargs): args = [int (x) X के लिए args] kwargs = तानाशाही ((k, int (v)) k के लिए, v kwargs.items ()) वापसी f (*args, ** kwargs)

यह डेकोरेटर मूल फ़ंक्शन के हस्ताक्षर को लपेटे हुए फ़ंक्शन के तर्क के रूप में पारित करके संरक्षित करता है। DEF FUNY_FUNCTION (x, y, z = 3): "" "X*y 2*z की गणना करता है" "" X*y 2*z

def args_as_ints(f):
    def g(*args, **kwargs):
        args = [int(x) for x in args]
        kwargs = dict((k, int(v)) for k, v in kwargs.items())
        return f(*args, **kwargs)
    return g

>>> सहायता (funny_function) मॉड्यूल में फनी_फंक्शन पर मदद करें __main__: फनी_फंक्शन (x, y, z = 3) X*y 2*z

python 3.4:

के लिए। def args_as_ints (func): @functools.wraps (func) डेफ रैपर (*args, ** kwargs): args = [int (x) X के लिए args] kwargs = तानाशाही ((k, int (v)) k के लिए, v kwargs.items ()) फंक लौटें (*args, ** kwargs) इन तकनीकों का उपयोग करके आवरण

    वापस करें, डेकोरेटर अपने मूल हस्ताक्षर को संरक्षित करते हुए, कोडबेस में स्पष्टता और स्थिरता सुनिश्चित करते हुए कार्य कार्यक्षमता को बढ़ा सकते हैं।
विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: 1729155261 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3