2011-02-01 13 views
7

मान लें कि हमारे पास इस तरह का एक कार्य है:पायथन में किसी अन्य फ़ंक्शन में किसी विशेष फ़ंक्शन के तर्क के डिफ़ॉल्ट मानों का पता कैसे लगाएं?

def myFunction(arg1='a default value'): 
    pass 

हम myFunction.func_code.co_varnames का उपयोग करते हुए myFunction() का तर्क लेने वाले तर्कों के नामों का पता लगाने के लिए आत्मनिरीक्षण का उपयोग कर सकते हैं, लेकिन arg1 का डिफ़ॉल्ट मान कैसे पता लगाएं (जो 'a default value' है उपर्युक्त उदाहरण)?

+0

मैं इस एक विकी बजाय कर सकते हैं:

import inspect spec = inspect.getargspec(myFunction) 

तो कल्पना ऐसे args और defaults के रूप में विशेषताओं के साथ एक ArgSpec वस्तु है? मैं यह पता लगाने में असमर्थ हूं कि इसे कैसे किया जाए। प्रश्न पूछने के तुरंत बाद मुझे जवाब मिला, इसलिए जब मैंने अपने प्रश्न का उत्तर दिया, तो यह बेहतर है कि मैं इसे विकी बना दूं। – Srikanth

+0

@ जोश: धन्यवाद। डंकन से एक बेहतर जवाब मिला, और इसके बजाय स्वीकृत उत्तर के रूप में चिह्नित किया गया। – Srikanth

उत्तर

9

के रूप में फ़ंक्शन के गुणों में चारों ओर घूमने का विकल्प आप थोड़ा सा मित्रवत के लिए निरीक्षण मॉड्यूल का उपयोग कर सकते हैं इंटरफ़ेस:

ArgSpec(args=['arg1'], varargs=None, keywords=None, defaults=('a default value',)) 
+2

यह बहुत बेहतर है क्योंकि आप चर नामों के साथ-साथ उनके डिफ़ॉल्ट मान भी प्राप्त करते हैं (यदि मौजूद है)! –

0

मेरा बुरा। बेशक, myFunction.func_defaults है।

7

आप इस तरह एक समारोह f परिभाषित हैं:

>>> def f(a=1, b=True, c="foo"): 
...  pass 
... 

अजगर 2 में, आप का उपयोग कर सकते हैं:

>>> f.func_defaults 
(1, True, 'foo') 
>>> help(f) 
Help on function f in module __main__: 
f(a=1, b=True, c='foo') 

जबकि अजगर 3 में, यह है:

>>> f.__defaults__ 
(1, True, 'foo') 
>>> help(f) 
Help on function f in module __main__: 
f(a=1, b=True, c='foo') 
+2

डंकन के उत्तर की जांच करें, यह इस से काफी बेहतर है। –

संबंधित मुद्दे

 संबंधित मुद्दे