2012-06-15 13 views
13

मेरे आईपीथॉन शैल से, मुझे os.en वातावरण में एक विधि setdefault दिखाई देता है लेकिन यह दस्तावेज नहीं है। http://docs.python.org/library/os.html#os.environ। क्या यह कहीं और दस्तावेज है?क्या यह os.en वातावरण.setdefault का उपयोग सुरक्षित है?

def setdefault(self, key, failobj=None): 
    if key not in self: 
     self[key] = failobj 
    return self[key] 

क्या मैं इस फ़ंक्शन का उपयोग कर सकता हूं या उन पंक्तियों के लिए एक रैपर लिख सकता हूं?

+0

समान कार्यक्षमता के साथ एक समान 'dict.setdefault' विधि है। – eumiro

उत्तर

16

os.environ documentation राज्य है कि यह एक मानचित्रण है:

एक मानचित्रण वस्तु स्ट्रिंग वातावरण का प्रतिनिधित्व।

ऐसे में यह अजगर mapping documentationdict मानक कार्यान्वयन है, जिनमें से के अनुसार व्यवहार करता है।

os.environ की वजह सिर्फ मानक dict की तरह बर्ताव करता है, यह सब एक ही तरीके होते हैं:

>>> import os 
>>> len(os.environ) 
36 
>>> 'USER' in os.environ 
True 
>>> os.environ.fromkeys 
<bound method classobj.fromkeys of <class os._Environ at 0x107096ce8>> 

.setdefault method मानचित्रण विधियों में बाकी के रूप में एक ही पृष्ठ पर दर्ज है, और आप इसे ठीक उपयोग कर सकते हैं जैसा है।

4

स्पष्टीकरण के लिए --- मुझे थोड़ी देर के लिए सोचना था कि इस सवाल और उत्तर का मतलब क्या है --- os.en वातावरण पर Python.org दस्तावेज़ सभी अंतर्निहित तरीकों का उल्लेख करने के लिए परेशान नहीं हैं मानचित्रण प्रकारों के लिए (जैसे os.en वातावरण जो मूल रूप से एक शब्दकोश है जिसके लिए अतिरिक्त विधियां दी गई हैं)।

इसके बजाए, वे मुख्य रूप से उन तरीकों का उल्लेख करते हैं जो उन्होंने ओएस में किसी ऑब्जेक्ट को दिया है, नामित वातावरण और टाइप डॉक से व्युत्पन्न, जो पहले से ही बनाए गए नियमों से परे है। मेरे पास पाइथन पर एक पुस्तक से, सारांश किसी भी शब्दकोश प्रकार के लिए dict.setdefault (कुंजी, डिफ़ॉल्ट = कोई नहीं) है, और स्पष्टीकरण यह है कि यह प्राप्त करने के समान है() लेकिन यह कुंजी [कुंजी] = डिफ़ॉल्ट सेट करता है यदि कुंजी पहले से ही dict में नहीं है।

डिफ़ॉल्ट शायद यहां नाम के रूप में अच्छी तरह से नहीं चुना गया है क्योंकि यह किसी फ़ंक्शन घोषणा में डिफ़ॉल्ट मानों को घोषित करने का सामान्य तरीका है, कुछ avariablename = defaultvalue के साथ आसानी से उलझन में है। यही है, जबकि डिफ़ॉल्ट = कोई निश्चित रूप से डिफ़ॉल्ट सेट नहीं करता है, यह स्पष्ट नहीं है कि किसी भी अर्थ में setdefault अनिवार्य रूप से डिफ़ॉल्ट सेट करता है, क्योंकि डिफ़ॉल्ट को कोई मान दिया जा सकता है।

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