Разница между ОС.getenv и os.окружающая среда.получить?


есть ли вообще разница между этими двумя? Когда я должен использовать один над другим? Один из них устарел? Они, кажется, имеют точно такую же функциональность.

>>> 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
3 77

3 ответа:

одно различие наблюдается (Python27):

os.environ вызывает исключение, если переменная среды не существует. os.getenv не вызывает исключение, но возвращает none

посмотреть это связано потока. В принципе,os.environ находится на импорте, и os.getenv - Это оболочка для os.environ.get, по крайней мере в CPython.

EDIT: чтобы ответить на комментарий, в CPython,os.getenv это в основном ярлык для os.environ.get ; С os.environ загружается при импорте os, и только тогда, то же самое относится к os.getenv.

в Python 2.7 с iPython:

>>> 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.