जबकि os.environ.getऔर के बीच कोई कार्यात्मक अंतर नहीं है os.getenv, और प्रविष्टियों को सेट करने के बीच एक बड़ा अंतर है । है टूट , तो आप के लिए डिफ़ॉल्ट चाहिए बस जिस तरह से बचने के लिए आप का उपयोग करने के लिए प्रोत्साहित करती है समरूपता के लिए।os.putenvos.environos.putenvos.environ.getos.getenvos.putenv
os.putenvवास्तविक ओएस स्तरीय वातावरण चर बदलता है, लेकिन एक तरह से है कि के माध्यम से दिखाई नहीं देता os.getenv, os.environया वातावरण चर निरीक्षण के किसी भी अन्य stdlib रास्ता:
>>> import os
>>> os.environ['asdf'] = 'fdsa'
>>> os.environ['asdf']
'fdsa'
>>> os.putenv('aaaa', 'bbbb')
>>> os.getenv('aaaa')
>>> os.environ.get('aaaa')
आपको शायद कॉल करने के getenvबाद वास्तविक वातावरण चर को देखने के लिए C-स्तर पर ctypes कॉल करना होगा os.putenv। (शेल उपप्रकार को लॉन्च करना और उसके पर्यावरण चर के लिए यह पूछना भी काम कर सकता है, अगर आप भागने के बारे में बहुत सावधान हैं और --norc/ --noprofileया कुछ और जो आपको स्टार्टअप कॉन्फ़िगरेशन से बचने के लिए करने की आवश्यकता है, लेकिन सही होने के लिए बहुत कठिन लगता है।)
os.environ.get()कौन से रिटर्नNone(जब तक कि अलग-अलग निर्दिष्ट नहीं किए गए हैं) और कभी भी एक अपवाद नहीं बढ़ाता है यदि एन.वी. वर। मौजूद नहीं है। आपकी भ्रमित करने वाली चीजें जिनके उपयोगos.environ['TERM']से ऐसा नहीं है कि सवाल क्या है।