d={}
создает новый словарь.
d.clear()
очищает словарь.
Если вы используете d={}
, то все, что указывает на d
, будет указывать на старое d
. Это может привести к ошибке.
Если вы используете d.clear()
, то все, что указывает на d
, теперь будет указывать на очищенный словарь, это также может привести к ошибке, если это было не то, что вы хотели.
Кроме того, я не думаю, что d.clear()
(в CPython) освободит память, занятую d
. Что касается производительности, CPython не не отнимает память у словарей при удалении элементов, так как обычное использование словарей - создание большого словаря, а , может быть , сокращение нескольких элементов. Переназначение памяти (и обеспечение соответствия хеш-таблицы) в большинстве случаев займет слишком много времени. Вместо этого он заполняет словарь turds
(это технический термин в списке рассылки), который указывает, что элемент был там, но с тех пор был удален. Я не совсем уверен, если d.clear()
делает это, хотя, но удаление всех ключей один за другим, безусловно, делает.