Python 使用os.environ.setdefault安全吗?

Python 使用os.environ.setdefault安全吗?,python,dictionary,environment-variables,python-os,Python,Dictionary,Environment Variables,Python Os,在我的ipython shell中,我在os.environ中看到了一个方法setdefault,但它没有文档记录。它在其他地方有记录吗 def setdefault(self, key, failobj=None): if key not in self: self[key] = failobj return self[key] 我可以使用此函数或为这些行编写包装器吗?确实声明它是一个映射: 表示字符串环境的映射对象 因此,它根据python进行操作,dict

在我的ipython shell中,我在os.environ中看到了一个方法setdefault,但它没有文档记录。它在其他地方有记录吗

def setdefault(self, key, failobj=None):
    if key not in self:
        self[key] = failobj
    return self[key]
我可以使用此函数或为这些行编写包装器吗?

确实声明它是一个映射:

表示字符串环境的映射对象

因此,它根据python进行操作,
dict
是python的标准实现

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>>
导入操作系统 >>>len(操作系统环境) 36 >>>操作系统环境中的“用户” 真的 >>>os.environ.fromkeys 与其他映射方法记录在同一页上,您可以按原样使用它。

为了澄清——我不得不思考一下这个问题和答案的含义——os.environ上的Python.org文档不必提及所有用于映射类型的内置方法(例如os.environ,它基本上是一个字典,提供了额外的方法)

相反,他们主要提到了他们在操作系统中为一个名为environ的对象提供的附加方法,该对象是从dict类型派生而来的,而不是dict已经内置的那些方法但如果dict中还没有键,则它将dict[key]=设置为默认值


默认值在这里可能不是一个好的名称,因为它很容易与somevariablename=defaultvalue混淆,后者是在函数声明中声明默认值的正常方式。也就是说,虽然default=None肯定会设置默认值,但不清楚setdefault在任何意义上是如何设置默认值的,因为默认值可能被赋予任何值e、

有一个类似的
dict.setdefault
方法,具有相同的功能。在这里进行标记。
setdefault
存在并且可用,但是应该注意从何处获取默认值。您可能需要显式执行类似于
os.environ['foo']=os.environ.get('foo','my_default')的操作
;因此为该进程及其可能产生的任何子进程设置了默认值。(而
setdefault
是影响映射/dict查找行为的Python代码级别。)@hangtwenth:
os.environ.setdefault(key,default)
保证以与
os.environ[key]完全相同的方式修改字典=os.environ.get(key,default)
会这样做。这是因为支持该词典的
os.\u environ
类。谢谢你提供的信息,我想我可能是把自己弄糊涂了!(我使用了一个脚本,我以为我看到了上面的行为,但它一定是其他东西。)