python - not - Diferencia entre os.getenv y os.environ.get?
python variables windows (3)
¿Hay alguna diferencia en absoluto entre estos dos? ¿Cuándo debería usar uno sobre el otro? Es uno de estos obsoletos? Parecen tener la misma funcionalidad exacta.
>>> 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
En Python 2.7 con 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
Por lo tanto, podemos concluir que os.getenv
es simplemente un simple contenedor alrededor de os.environ.get
.
Una diferencia observada (Python27):
os.environ
plantea una excepción si la variable ambiental no existe. os.getenv
no os.getenv
una excepción, pero devuelve None
Ver este hilo relacionado . Básicamente, os.environ
se encuentra en la importación, y os.getenv
es un contenedor para os.environ.get
, al menos en CPython.
EDITAR: para responder a un comentario, en CPython, os.getenv
es básicamente un acceso directo a os.environ.get
; ya que os.environ
se carga en la importación de os
, y solo entonces, lo mismo vale para os.getenv
.