Meskipun tidak ada perbedaan fungsional antara os.environ.get
dan os.getenv
, ada perbedaan besar antara os.putenv
dan pengaturan entri aktif os.environ
. os.putenv
adalah rusak , sehingga Anda harus default untuk os.environ.get
hanya untuk menghindari cara os.getenv
mendorong Anda untuk menggunakan os.putenv
untuk simetri.
os.putenv
perubahan 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 getenv
untuk 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.