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

В Python используется выражение `del` запаха кода?

Я стараюсь использовать его всякий раз, когда я работаю над прототипом script и:

  • Используйте несколько общую переменную (например, fileCount) и
  • Имейте большой метод (20+ строк) и
  • Пока не используйте классы или пространства имен.

В этой ситуации, чтобы избежать потенциального столкновения переменных, я удаляю bugger, как только я закончил с ним. Я знаю, что в производственном коде я должен избегать 1., 2. и 3., но переход от прототипа, который работает для полностью полированного класса, требует много времени. Иногда я могу согласиться на неоптимальную, быструю работу по рефакторингу. В этом случае я считаю, что поддерживающие операторы del удобны. Я разрабатываю ненужную, плохую привычку? Является ли del полностью предотвратимым? Когда это будет хорошо?

4b9b3361

Ответ 1

Я не думаю, что del сам по себе является запахом кода.

Повторное использование имени переменной в том же пространстве имен, безусловно, является запахом кода, поскольку не использует классы и другие пространства имен, где это необходимо. Поэтому использование del для облегчения такого рода вещей - это запах кода.

Единственное, действительно подходящее использование del, которое я могу думать о моей голове, - это нарушение циклических ссылок, которые часто также являются запахами кода (и часто это время даже не требуется). Помните, что все del выполняет удаление ссылки на объект, а не на сам объект. Это будет учтен либо подсчетом ссылок, либо сбором мусора.

>>> a = [1, 2]
>>> b = a
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> b
[1, 2]

Вы можете видеть, что список сохраняется в памяти после оператора del, поскольку b все еще содержит ссылку на него.

Итак, хотя del на самом деле не является запахом кода, он может быть связан с вещами.

Ответ 2

Любой код, хорошо организованный в функциях, классах и методах, не нуждается в del, за исключением исключительных обстоятельств. Стремитесь правильно создавать свои приложения с самого начала, используя больше функций и методов, избегать повторного использования имен переменных и т.д.

Использование оператора del в порядке - это не приводит к какой-либо проблеме, я часто использую его, когда я использую Python в качестве замены сценариев оболочки в своей системе, и когда я создаю script эксперименты. Однако, если он часто появляется в реальном приложении или библиотеке, это указывает на то, что что-то не так, вероятно, плохо структурированный код. Мне никогда не приходилось использовать его в приложении, и вы редко видели, как он использовался где-либо в выпущенном коде.