从我的ipython shell中,我在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]
我可以使用此功能或为这些行编写包装吗?
答案 0 :(得分:25)
os.environ
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>>
因此就像标准字典一样,它具有所有相同的方法:
{{1}}
mapping documentation与其他映射方法记录在同一页面上,您可以按原样使用它。
答案 1 :(得分:5)
澄清---我不得不考虑一下这个问题和答案意味着什么 - 关于os.environ的Python.org文档并没有提到所有的内置方法映射类型(例如os.environ,它基本上是一个已经给出其他方法的字典)。
相反,他们主要提到了他们给os中的一个对象的额外方法,名为environ并从类型dict派生,超出了dict已经内置的那些。从我在Python上的一本书,概述为任何字典类型都是dict.setdefault(key,default = None),解释是它类似于get()但它设置了dict [key] = default如果key不在dict中。
默认值可能没有很好地选择作为名称,因为它很容易与somevariablename = defaultvalue混淆,后者是在函数声明中声明默认值的常规方法。也就是说,虽然default = None肯定会设置默认值,但不清楚setdefault在任何意义上如何设置默认值,因为默认值可以赋予任何值。