为什么带变量名称括号的del(x)有效?

时间:2016-08-18 22:09:21

标签: python

为什么这段代码按照它的方式工作?

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

我的理解是del是Python中的关键字,del后面的内容应该是名称。 (name)不是名字。为什么该示例似乎表明del (name)del name的工作方式相同?

1 个答案:

答案 0 :(得分:5)

del statement的定义是:

del_stmt ::=  "del" target_list

以及target_list的定义:

target_list ::=  target ("," target)* [","]
target      ::=  identifier
                 | "(" target_list ")"
                 | "[" [target_list] "]"
                 | ...

您可以看到目标列表周围的括号是允许的。

例如,如果您定义x,y = 1,2,则允许所有这些并且具有相同的效果:

del x,y
del (x,y)
del (x),[y]
del [x,(y)]
del ([x], (y))