Что особенного в удалении пустого списка?
Рассмотрим следующее...
In [1]: del []
In [2]: del {}
File "<ipython-input-2-24ce3265f213>", line 1
SyntaxError: can't delete literal
In [3]: del ""
File "<ipython-input-3-95fcb133aa75>", line 1
SyntaxError: can't delete literal
In [4]: del ["A"]
File "<ipython-input-5-d41e712d0c77>", line 1
SyntaxError: can't delete literal
Что особенного в []
? Я ожидаю, что это поднимет и SyntaxError
. Почему не так? Я наблюдал это поведение в Python2 и Python3.
Ответы
Ответ 1
Синтаксис инструкции del
позволяет target_list
и включает в себя список или кортеж имен переменных.
Он предназначен для одновременного удаления нескольких имен:
del [a, b, c]
что эквивалентно:
del (a, b, c)
или
del a, b, c
Но python не применяет список для фактического наличия каких-либо элементов.
Выражение
del ()
с другой стороны, является синтаксической ошибкой; ()
рассматривается как буквальный пустой кортеж в этом случае.