使用os.environ.setdefault是否安全?

时间:2012-06-15 09:04:37

标签: python dictionary environment-variables python-os

从我的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]

我可以使用此功能或为这些行编写包装吗?

2 个答案:

答案 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在任何意义上如何设置默认值,因为默认值可以赋予任何值。