में कीवर्ड तर्क के रूप में स्थितित्मक तर्कों का इलाज कैसे कर सकता हूं एक सजावट के लिए मैं लिख रहा हूं, मैं एक फ़ंक्शन के विशिष्ट नामित पैरामीटर में हेरफेर करना चाहता हूं। ,मैं पाइथन 2
>>> quotient(dividend=2)
4
लेकिन जब के रूप में दिया:
def square_param(param):
def func_decorator(func):
def func_caller(*args,**kwargs):
kwargs[param] = kwargs[param] * kwargs[param]
return func(*args,**kwargs)
return func_caller
return func_decorator
एप्लाइड अगले समारोह पर: निम्नलिखित डेकोरेटर पर विचार करें
@square_param('dividend')
def quotient(divisor=1,dividend=0):
return dividend/divisor
यह कार्य करेगा जब लाभांश एक कीवर्ड तर्क जैसे के रूप में कहा जाता है एक स्थितित्मक तर्क यह असफल हो जाएगा।
>>> quotient(3,4)
TypeError: quotient() got multiple values for keyword argument 'dividend'
अजगर 3 के साथ मैं पैरामीटर मजबूर कर इस का समाधान कर सकता always given as a keyword होने के लिए:
@square_param('dividend')
def quotient(divisor=1,*,dividend=0):
return dividend/divisor
लेकिन मैं अजगर 2 का समर्थन करना चाहते हैं और यह भी मैं समारोह पर कम से कम प्रतिबंध लगाने के लिए चाहते हैं ।
क्या कोई तरीका है कि मैं अपने सजावट में इस व्यवहार को ठीक कर सकता हूं?
निरीक्षण मॉड्यूल का निरीक्षण करें। इसके लिए आपको इसकी आवश्यकता हो सकती है। Getargspec पर एक नज़र डालें। – Dirk