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