Mặc dù không có sự khác biệt về chức năng giữa os.environ.getvà os.getenv, có một sự khác biệt lớn giữa os.putenvvà cài đặt các mục trên os.environ. os.putenvđược chia nhỏ , vì vậy bạn nên mặc định os.environ.getđơn giản để tránh đường os.getenvkhuyến khích bạn sử dụngos.putenv cho đối xứng.
os.putenvthay đổi các biến môi trường hệ điều hành cấp thực tế, nhưng theo một cách mà không hiển thị thông qua os.getenv, os.environhoặc bất kỳ cách nào stdlib khác kiểm tra các biến môi trường:
>>> import os
>>> os.environ['asdf'] = 'fdsa'
>>> os.environ['asdf']
'fdsa'
>>> os.putenv('aaaa', 'bbbb')
>>> os.getenv('aaaa')
>>> os.environ.get('aaaa')
Bạn có thể phải thực hiện một cuộc gọi ctypes đến cấp độ C getenvđể xem các biến môi trường thực sau khi gọi os.putenv. (Khởi chạy một quy trình con shell và yêu cầu nó cho các biến môi trường của nó cũng có thể hoạt động, nếu bạn rất cẩn thận về việc thoát và --norc/ --noprofile/ bất cứ điều gì khác bạn cần làm để tránh cấu hình khởi động, nhưng có vẻ khó hơn rất nhiều để làm đúng.)
os.environ.get()trả vềNone(trừ khi được chỉ định khác nhau) và không bao giờ đưa ra ngoại lệ nếu env. var. không tồn tại Những điều khó hiểu của bạn với việc sử dụngos.environ['TERM']không phải là những gì câu hỏi là về.