Кажется разумным полагать, что dict.pop
работает атомарно, так как он поднимает KeyError
, если указанный ключ отсутствует, и по умолчанию предоставляется так:
d.pop(k)
Однако в документации не указано, что конкретно адресовано эта точка, по крайней мере, в разделе, специально не документирующем dict.pop
.
Этот вопрос возник у меня, когда я рассматривал мой ответ, который использовал этот шаблон:
if k in d: del d[k]
В то время я не думал о потенциальном условии, что ключ может присутствовать во время if
, но не во время del
. Если dict.pop
действительно предоставляет атомную альтернативу, я должен отметить это в своем ответе.