28

私の 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]

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

4

2 に答える 2

36

os.environドキュメントには、マッピングであると記載されています。

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

そのため、標準実装であるpythonマッピング ドキュメントに従って動作します。dict

os.environしたがって、標準の dict と同じように動作し、すべて同じメソッドがあります。

>>> 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メソッドは、残りのマッピング メソッドと同じページに記載されており、そのまま問題なく使用できます。

于 2012-06-15T09:46:37.480 に答える
6

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

代わりに、彼らは主に、それらが os のオブジェクトに与えた、environ という名前の、タイプ dict から派生した、dict が既に組み込まれているものを超えた追加のメソッドについて言及しています。 dict.setdefault(key, default=None) であり、説明は get() に似ていますが、キーがまだ dict にない場合は dict[key]=default を設定します。

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

于 2013-02-12T20:01:41.763 に答える