2012-06-15 10 views

risposta

16

Il os.environ documentation vuol affermare che è una mappatura:

Un oggetto mappa che rappresenta l'ambiente stringa.

Come tale si comporta secondo il pitone mapping documentation cui dict è l'implementazione standard.

os.environ Perciò si comporta proprio come il dict standard, ha tutti gli stessi metodi:

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

Il .setdefault method è documentato sulla stessa pagina, come il resto dei metodi di mappatura, e si può usare bene come è.

4

Per chiarire --- Ho dovuto pensare per un po 'a cosa significano questa domanda e risposta --- i documenti Python.org su os.environ non si preoccupano di menzionare tutti i metodi incorporati per i tipi di mappatura (come os.environ che è fondamentalmente un dizionario a cui sono stati dati metodi aggiuntivi).

Invece, menzionano principalmente i metodi aggiuntivi che hanno dato a un oggetto in os, chiamato environ e derivato da tipo dict, oltre a quelli che già ha già incorporato. Da un libro che ho su Python, la sinossi per ogni tipo di dizionario è dict.setdefault (key, default = None), e la spiegazione è che è simile a get() ma imposta dict [key] = default se key non è già in dict.

Il valore predefinito non è forse ben scelto come nome qui perché è facilmente confuso con somevariablename = defaultvalue, il modo normale di dichiarare valori predefiniti in una dichiarazione di funzione. Cioè, mentre default = None imposta sicuramente un valore predefinito, non è chiaro in che modo setdefault in alcun senso imposta essenzialmente un valore predefinito, in quanto a default può essere assegnato qualsiasi valore.

Problemi correlati