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

Isa*_* To 1 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
Run Code Online (Sandbox Code Playgroud)

我的理解是它del是Python中的关键字,接下来del应该是一个名称.(name)不是名字.为什么这个例子似乎表明它的del (name)作用相同del name

Oha*_*tan 6

del声明的定义是:

del_stmt ::=  "del" target_list
Run Code Online (Sandbox Code Playgroud)

并从定义target_list:

target_list ::=  target ("," target)* [","]
target      ::=  identifier
                 | "(" target_list ")"
                 | "[" [target_list] "]"
                 | ...
Run Code Online (Sandbox Code Playgroud)

您可以看到允许围绕目标列表的括号.

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

del x,y
del (x,y)
del (x),[y]
del [x,(y)]
del ([x], (y))
Run Code Online (Sandbox Code Playgroud)