web-dev-qa-db-ja.com

os.environ.setdefaultを使用しても安全ですか?

私のipythonシェルから、os.environにメソッドsetdefaultが表示されますが、文書化されていません。 http://docs.python.org/library/os.html#os.environ 。別の場所に文書化されていますか?

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

この関数を使用したり、それらの行のラッパーを記述したりできますか?

22
balki

os.environ documentation は、それがマッピングであることを示しています。

文字列環境を表すマッピングオブジェクト。

そのため、python mapping documentation )に従って動作し、dictは標準実装です。

os.environしたがって、標準の辞書と同じように動作し、すべて同じメソッドを持っています:

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

.setdefault method は、他のマッピングメソッドと同じページに記載されており、そのまま使用できます。

28
Martijn Pieters

明確にするために、この質問と回答の意味について少し考えなければなりませんでした--- os.environのPython.orgドキュメントでは、タイプをマッピングするためのすべての組み込みメソッド( os.environなど、基本的には追加のメソッドが指定された辞書です)。

代わりに、彼らは主にosのオブジェクトにenvironという名前でdict型から派生した追加のメソッドに言及し、dictがすでに組み込んでいるものを超えています。Pythonに関する本から、あらゆる辞書型の概要dict.setdefault(key、default = None)であり、説明はget()に似ていますが、キーがまだdictにない場合はdict [key] = defaultを設定します。

defaultは、関数の宣言でデフォルト値を宣言する通常の方法であるsomevariablename = defaultvalueと簡単に混同されるため、ここでは名前として適切に選択されていない可能性があります。つまり、default = Noneは確かにデフォルトを設定しますが、デフォルトには任意の値を指定できるため、基本的にどのようにsetdefaultがデフォルトを設定するかは明確ではありません。

5
Mike O'Connor