variable read environ python dictionary environment-variables python-os

python - read - ¿Es seguro usar os.environ.setdefault?



python set environment value (2)

Desde mi shell ipython, veo un método setdefault en os.environ pero no está documentado. http://docs.python.org/library/os.html#os.environ . ¿Está documentado en otro lugar?

def setdefault(self, key, failobj=None): if key not in self: self[key] = failobj return self[key]

¿Puedo usar esta función o escribir un contenedor para esas líneas?


La http://docs.python.org/library/os.html#os.environ indica que es un mapeo:

Un objeto de mapeo que representa el entorno de cadena.

Como tal, se comporta de acuerdo con la documentación de mapeo de python de la cual el dict es la implementación estándar.

os.environ comporta igual que el dict estándar, tiene todos los mismos métodos:

>>> import os >>> len(os.environ) 36 >>> ''USER'' in os.environ True >>> os.environ.fromkeys <bound method classobj.fromkeys of <class os._Environ at 0x107096ce8>>

El método .setdefault está documentado en la misma página que el resto de los métodos de mapeo, y puede usarlo tal como está.


Para aclarar, tuve que pensar por un momento qué significan estas preguntas y respuestas: los documentos de Python.org en os.environ no se molestan en mencionar todos los métodos incorporados para los tipos de mapeo ( como os.environ, que es básicamente un diccionario al que se le han dado métodos adicionales).

En su lugar, mencionan principalmente los métodos adicionales que le han dado a un objeto en os, denominado environ y derivado de type dict, más allá de los que dict ya ha incorporado. De un libro que tengo en Python, la sinopsis de cualquier tipo de diccionario. es dict.setdefault (clave, predeterminado = Ninguno), y la explicación es que es similar a get () pero establece dict [clave] = predeterminado si la clave aún no está en dict.

quizás el valor predeterminado no esté bien elegido como nombre aquí porque se confunde fácilmente con somevariablename = valor predeterminado, la forma normal de declarar valores predeterminados en una declaración de función. Es decir, mientras que default = None ciertamente establece un default, no está claro cómo setdefault en ningún sentido esencialmente establece un default, ya que el valor predeterminado puede tener algún valor.