Подтвердить что ты не робот

Безопасно ли использовать os.environ.setdefault?

Из моей оболочки ipython я вижу метод setdefault в os.environ, но он не документирован. 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]

Могу ли я использовать эту функцию или написать оболочку для этих строк?

4b9b3361

Ответ 1

В документации 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 описан на той же странице, что и остальные методы сопоставления, и вы можете использовать его как можно лучше.

Ответ 2

Чтобы уточнить, мне нужно было немного подумать о том, что означает этот вопрос и ответ - в документах Python.org на os.environ не стоит упоминать все встроенные методы для (например, os.environ, который в основном является словарем, которому предоставляются дополнительные методы).

Вместо этого они в основном упоминают дополнительные методы, которые они предоставили объекту в os, называемому environ и производным от типа dict, помимо тех, которые уже встроены в dict. Из книги, которую я имею на Python, резюме для любой тип словаря - dict.setdefault(key, default = None), и объяснение состоит в том, что оно похоже на get(), но оно устанавливает dict [key] = default, если ключ еще не указан в dict.

по умолчанию, возможно, не так хорошо выбрано в качестве имени, потому что его легко путать с somevariablename = defaultvalue, обычным способом объявления значений по умолчанию в объявлении функции. То есть, в то время как default = None, конечно, задает значение по умолчанию, неясно, как setdefault в любом смысле по существу устанавливает значение по умолчанию, поскольку по умолчанию может быть задано любое значение.