Безопасно ли использовать 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]
Могу ли я использовать эту функцию или написать оболочку для этих строк?
Ответы
Ответ 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 в любом смысле по существу устанавливает значение по умолчанию, поскольку по умолчанию может быть задано любое значение.