为什么这段代码按照它的方式工作?
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?
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)