Est-il sécuritaire d'utiliser os.environ.setdefault?
De mon ipython shell, je vois une méthode setdefault en os.environ, mais il n'est pas documentée. http://docs.python.org/library/os.html#os.environ. Est-il documenté quelque part d'autre?
def setdefault(self, key, failobj=None):
if key not in self:
self[key] = failobj
return self[key]
Puis-je utiliser cette fonction, ou écrire un wrapper pour ces lignes?
Il est similaire
dict.setdefault
méthode avec les mêmes fonctionnalités.OriginalL'auteur balki | 2012-06-15
Vous devez vous connecter pour publier un commentaire.
La
os.environ
de la documentation fait état c'est un mapping:En tant que tel, il se comporte selon le python la cartographie de la documentation de qui
dict
est la norme de mise en œuvre.os.environ
à cet effet se comporte exactement comme le standard dict, il a tous les mêmes méthodes:La
.setdefault
méthode est documenté sur la même page que le reste de la cartographie des méthodes, et vous pouvez l'utiliser c'est très bien comme il est.setdefault
existe et qu'il est utilisable, mais des précautions doivent être prises au sujet de où l'on s'attend à ce pour obtenir la valeur par défaut. Vous pouvez explicitement faire quelque chose commeos.environ['foo'] = os.environ.get('foo', 'my_default')
. en Fait, le réglage de la clé est garantiputenv
où disponible; de sorte que la valeur par défaut est définie pour ce processus et de tous les sous-processus, il pourrait frayer. (Alors quesetdefault
Python au niveau du code qui affectent le comportement de la cartographie/dict recherche.)par défaut) est garanti pour modifier le dictionnaire exactement de la même manière que
os.environ[key] = os.environ.get(key, default)
serait. C'est parce que laos._Environ
classe qui soutient le dictionnaire explicitement assure que c'.merci pour cette info, je pense que j'ai été confus moi-même! (J'avais un script que j'utilisais lorsque j'ai pensé que j'ai vu le comportement ci-dessus, mais il doit avoir été quelque chose d'autre.)
OriginalL'auteur Martijn Pieters
À préciser--- j'ai dû réfléchir un peu à ce que cette question et la réponse moyenne--- le Python.org docs sur les os.environ n'est pas la peine de mentionner tous les construit-dans les méthodes de cartographie des types (tels que les os.environ ce qui est essentiellement un dictionnaire auquel d'autres méthodes ont été donnés).
Au lieu de cela, ils ont principalement oublier les méthodes qu'ils ont donné à un objet en os, nommé environ et dérivés de type dict, au-delà de ceux qui dict a déjà construit dans. À partir d'un livre que j'ai sur le Python, le synopsis pour n'importe quel type de dictionnaire est dict.setdefault(clé, valeur par défaut=None), et l'explication est qu'il est semblable à obtenir() mais cela dict[clé]=valeur par défaut si la clé n'est pas déjà dans le dict.
par défaut est peut-être pas bien choisi comme nom ici, car il est facilement confondu avec somevariablename= valeur par défaut, la façon normale de déclarer les valeurs par défaut dans une déclaration de fonction. Qui est, attendu que par défaut=None certainement définit une valeur par défaut, il n'est pas clair comment setdefault dans tous les sens, essentiellement définit une valeur par défaut, en tant que par défaut peut être donné aucune valeur.
OriginalL'auteur Mike O'Connor