在python 3.4中,我输入
[] = ""
并且工作正常,不会引发异常。虽然当然[]
不等于""
事后。
[] = ()
也可以。
"" = []
引发异常,但是,
() = ""
虽然引发了异常,但是。发生什么了?
您不是为了平等而比较。您正在分配。
Python允许您分配给多个目标:
foo, bar = 1, 2
将两个值分别分配给foo
和bar
。您只需要在右侧有一个序列或可迭代,在左侧有一个名称列表或元组。
当您这样做时:
[] = ""
您为空名称列表分配了一个空序列(空字符串仍然是序列)。
本质上与执行此操作相同:
[foo, bar, baz] = "abc"
最终以foo = "a"
,bar = "b"
和结束baz = "c"
,但字符数减少了。
但是,您不能将其分配给字符串,因此""
在分配的左侧永远不会起作用,并且始终是语法错误。
请参阅赋值语句文档:
赋值语句评估表达式列表(请记住,它可以是单个表达式或逗号分隔的列表,后者产生一个元组),并将单个结果对象从左到右分配给每个目标列表。
和
将对象分配给目标列表(可选地用括号或方括号括起来)的方式如下所述。
强调我的。
Python不会为空列表引发语法错误实际上是一个错误!正式记录的语法不允许有空的目标列表,对于空的目标,()
确实会出错。见bug 23275 ; 它被认为是无害的错误:
起点是认识到这种情况已经存在很长时间并且是无害的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句