Why does this piece of code work the way it does?
x = 3
print(dir()) #output indicates that x is defined in the global scope
del (x)
print(dir()) #output indicates that x is not defined in the global scope
My understanding is that del
is a keyword in Python, and what follows del
should be a name. (name)
is not a name. Why does the example seem to show that del (name)
works the same as del name
?
The definition of the del
statement is:
del_stmt ::= "del" target_list
and from the definition of target_list
:
target_list ::= target ("," target)* [","]
target ::= identifier| "(" target_list ")"| "[" [target_list] "]"| ...
you can see that parentheses around the list of targets are allowed.
For example, if you define x,y = 1,2
, all of these are allowed and have the same effect:
del x,y
del (x,y)
del (x),[y]
del [x,(y)]
del ([x], (y))