Meskipun tidak ada perbedaan fungsional antara os.environ.getdan os.getenv, ada perbedaan besar antara os.putenvdan pengaturan entri aktif os.environ. os.putenvadalah rusak , sehingga Anda harus default untuk os.environ.gethanya untuk menghindari cara os.getenvmendorong Anda untuk menggunakan os.putenvuntuk simetri.
os.putenvperubahan variabel lingkungan OS-tingkat yang sebenarnya, tetapi dengan cara yang tidak muncul melalui os.getenv, os.environ, atau cara stdlib lain memeriksa variabel lingkungan:
>>> import os
>>> os.environ['asdf'] = 'fdsa'
>>> os.environ['asdf']
'fdsa'
>>> os.putenv('aaaa', 'bbbb')
>>> os.getenv('aaaa')
>>> os.environ.get('aaaa')
Anda mungkin harus membuat panggilan ctypes ke tingkat-C getenvuntuk melihat variabel lingkungan nyata setelah menelepon os.putenv. (Meluncurkan subproses shell dan menanyakannya untuk variabel lingkungannya mungkin juga berfungsi, jika Anda sangat berhati-hati untuk melarikan diri dan --norc/ --noprofile/ hal lain yang perlu Anda lakukan untuk menghindari konfigurasi startup, tetapi tampaknya jauh lebih sulit untuk memperbaikinya.)
os.environ.get()pengembalianNone(kecuali ditentukan secara berbeda) dan tidak pernah menimbulkan pengecualian jika ENV. var. tidak ada. Hal-hal membingungkan Anda dengan menggunakanos.environ['TERM']yang bukan tentang pertanyaannya.