我用Python创建了一个列表
>>> my_list = [1, 2, 3, 4]现在,如果我想删除列表,我想使用del操作符,如
>>> del my_list这很好,而且可能是使用它的一般方法。但是在某个地方我偶然发现了一个不寻常的语法
>>> del[my_list]这也是一样的事!现在我有点搞不懂德尔到底是怎么工作的。我可以理解前面的语法,del是一个内置语句,但在我看来,第二个语法就像是索引。
发布于 2017-07-10 21:28:46
del获取目标名称列表,请参阅参考文献
del_stmt ::= "del“target_list
与作业和环一样,目标列表包括使用[...]和(...)列表以及元组语法:
del (foo, bar)
del [spam, ham, eggs]因此,您不是订阅del,而是删除一个名称列表。
你甚至可以筑巢:
del (foo, [ham, eggs])重用现有语法规则比严格将语法限制为逗号分隔的名称列表要简单得多。
完整的语法定义是:
target_list ::=目标(",“目标)* ",”x目标::=标识符"(“target_list ")”分部"[“target_list”]
因此,del *names在技术上也是有效的,但编译器的特例中,最后一种选择是SyntaxError:
>>> foo = None
>>> del *foo
File "<stdin>", line 1
SyntaxError: can't use starred expression here发布于 2017-07-10 21:28:36
这不是索引。
当del处理事物时,您可以一次指定多个要删除的内容:
del a, b还可以用括号或括号包围删除目标:
del [a, b]
del (a, b)即使只有一个删除目标,您也可以这样做:
del [a]这种行为在很大程度上反映了赋值行为,在这种情况下,可选括号或括号对于嵌套解包装非常有用:
nested_tup = (1, (2, 3))
[a, [b, c]] = nested_tup虽然技术上允许您做类似del [a, [b, c]]的事情,但它等同于del a, b, c。
https://stackoverflow.com/questions/45021822
复制相似问题