os.getenv和os.environ.g之间的区别

2024-04-19 15:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

两种方法有什么区别吗?

>>> os.getenv('TERM')
'xterm'
>>> os.environ.get('TERM')
'xterm'

>>> os.getenv('FOOBAR', "not found") == "not found"
True
>>> os.environ.get('FOOBAR', "not found") == "not found"
True

它们似乎具有完全相同的功能。


Tags: 方法功能truegetosenvironnotgetenv
3条回答

this related thread。基本上,os.environ在import中找到,os.getenvos.environ.get的包装,至少在CPython中是这样。

编辑:为了响应注释,在CPython中,os.getenv基本上是通向os.environ.get的捷径;因为os.environ是在os的导入时加载的,只有这样,对于 os.getenv

观察到一个差异(Python27):

如果环境变量不存在,os.environ将引发异常。 os.getenv不引发异常,但不返回任何异常

在使用iPython的Python 2.7中:

>>> import os
>>> os.getenv??
Signature: os.getenv(key, default=None)
Source:
def getenv(key, default=None):
    """Get an environment variable, return None if it doesn't exist.
    The optional second argument can specify an alternate default."""
    return environ.get(key, default)
File:      ~/venv/lib/python2.7/os.py
Type:      function

所以我们可以得出结论os.getenv只是os.environ.get的一个简单包装。

相关问题 更多 >