ในขณะที่ไม่มีการทำงานแตกต่างระหว่างos.environ.getและos.getenvมีขนาดใหญ่ความแตกต่างระหว่างและรายการการตั้งค่าos.putenv จะเสียดังนั้นคุณควรใช้ค่าเริ่มต้นเพียงเพื่อหลีกเลี่ยงวิธีการที่ขอให้คุณใช้สำหรับสมมาตรos.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')
คุณอาจต้องทำการเรียก ctypes ไปที่ระดับ C getenvos.putenvเพื่อดูตัวแปรสภาพแวดล้อมจริงหลังจากเรียก (การเปิดตัว subprocess เชลล์และขอตัวแปรสภาพแวดล้อมอาจทำงานได้เช่นกันหากคุณระมัดระวังในการหลบหนีและ--norc/ --noprofile/ สิ่งอื่นที่คุณต้องทำเพื่อหลีกเลี่ยงการกำหนดค่าเริ่มต้น แต่ดูเหมือนว่าจะยากขึ้นมากที่จะทำ)
os.environ.get()สิ่งที่ส่งคืนNone(ยกเว้นกรณีที่ระบุไว้แตกต่างกัน) และไม่ยกข้อยกเว้นถ้า env var ไม่มีอยู่ สิ่งที่คุณสับสนในการใช้os.environ['TERM']ซึ่งไม่ใช่คำถาม