Удаляет ли del (x, y) кортеж (x, y) или отдельные переменные x и y? - PullRequest
0 голосов
/ 01 февраля 2020

Допустим, следующий код:

lid = foo(guz)
tym = bar(jug)

hig(lid, tym)

del (lid, tym)

Будет ли вновь созданный анонимный кортеж (lid, tym) удален и lid будет по-прежнему доступен?
Или будут lid и tym Исключен

Ответы [ 2 ]

3 голосов
/ 01 февраля 2020

Удаляет переменные:

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

С документы :

7,5. Оператор del

del_stmt ::= "del" target_list

...

Удаление списка целей рекурсивно удаляет каждую цель слева направо.

0 голосов
/ 01 февраля 2020

Использование del (a, b) удалит переменные.

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