2012-06-15 13 views

Respuesta

16

El os.environ documentation sí declara que es un mapeo:

un objeto de asignación que representa el entorno de cadena.

Como tal, se comporta de acuerdo con el pitón mapping documentation de los cuales dict es la implementación estándar.

os.environ ello 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 .setdefault method se documenta en la misma página que el resto de los métodos de mapeo, y se puede utilizar muy bien como es.

4

Para aclarar --- tuve que pensar por un tiempo en lo que significan esta pregunta y respuesta --- los documentos de Python.org en os.environ no se molestan en mencionar todos los métodos incorporados para mapear tipos (como os.environ, que es básicamente un diccionario al que se han dado métodos adicionales).

En su lugar, mencionan principalmente los métodos adicionales que han dado a un objeto en el sistema operativo, denominado ambiental y derivado del tipo dict, más allá de los que ya tiene Dict incorporados. De un libro que tengo en Python, la sinopsis para cualquier tipo de diccionario es dict.setdefault (key, default = None), y la explicación es que es similar a get() pero establece dict [key] = default si key aún no está en dict.

es posible que el nombre predeterminado no sea bien elegido aquí porque se confunde fácilmente con somevariablename = defaultvalue, la forma normal de declarar los valores predeterminados en una declaración de función. Es decir, mientras que default = None ciertamente establece un valor por defecto, no está claro cómo setdefault en algún sentido esencialmente establece un valor predeterminado, ya que por defecto se le puede dar cualquier valor.

Cuestiones relacionadas