Get ENV (获取环境变量)
os.getenv() 和 os.environ.get() 的主要区别在于错误处理:当环境变量不存在时,os.getenv() 默认返回 None 或用户指定的默认值,而 os.environ.get() 也会返回默认值,但 os.environ 直接访问(如 os.environ['KEY'])则会引发 KeyError 异常。因此,os.getenv() 更适合用于环境变量可能不存在的情况,而 os.environ 则适合在环境变量必须存在、不存在时应导致程序中断的场景。
| 特性 | os.getenv(key, default) |
os.environ.get(key, default) |
os.environ['KEY'] |
|---|---|---|---|
| 处理未找到的环境变量 | 返回 None 或指定的 default 值。 | 返回 None 或指定的 default 值。 | 抛出 KeyError 异常。 |
| 主要用途 | 当环境变量不一定存在,且程序需要提供默认值时使用。 | 与 os.getenv() 相同,用于安全地获取环境变量。 | 适用于环境变量必须存在,否则程序应异常终止的场景。 |
| 底层实现 | os.getenv() 是 os.environ.get() 的一个封装。 | os.environ 是一个字典,.get() 方法是字典标准方法。 | 直接对字典进行索引操作,没有错误处理机制。 |
import os
# 假设MY_VARIABLE未设置
value1 = os.getenv('MY_VARIABLE') # value1 的值为 None
value2 = os.getenv('MY_VARIABLE', 'default_value') # value2 的值为 'default_value'
print(value1)
print(value2)
import os
# 假设MY_VARIABLE未设置
try:
value = os.environ['MY_VARIABLE']
print(value)
except KeyError:
print("MY_VARIABLE is not set")
选择哪种方法取决于你的具体需求:
如果需要一个安全获取环境变量的方式,并在环境变量缺失时提供一个默认值,使用 os.getenv() 或 os.environ.get()。两者功能相同,但 os.getenv() 通常更简洁易读。
如果你的代码要求环境变量必须存在,否则就应该报错中断,使用 os.environ['KEY'],并让程序捕获 KeyError 异常。