在 python 3.4 中,我正在输入
[] = ""
并且它工作正常,没有引发异常。虽然当然[]
不等于""
然后。
[] = ()
也工作正常。
"" = []
但正如预期的那样引发了异常,
() = ""
但正如预期的那样引发了异常。发生什么了?
你不是为了平等而比较。你是指派.
Python 允许您分配给多个目标:
foo, bar = 1, 2
将两个值赋给foo
and bar
, 分别。您所需要的只是一个sequence or iterable位于右侧,左侧是名称列表或元组。
当你这样做时:
[] = ""
你分配了一个empty序列(空字符串仍然是序列)到空名称列表。
这与执行以下操作本质上是一样的:
[foo, bar, baz] = "abc"
你最终会在哪里foo = "a"
, bar = "b"
and baz = "c"
,但字符较少。
但是,您不能分配给字符串,因此""
赋值左侧永远不会起作用,并且始终是语法错误。
See the 赋值语句文档:
赋值语句计算表达式列表(请记住,这可以是单个表达式或逗号分隔的列表,后者生成一个元组),并将单个结果对象从左到右分配给每个目标列表。
and
将对象分配给目标列表,可选择用括号或方括号括起来,递归定义如下。
强调我的.
Python 不会为空列表抛出语法错误,这实际上是一个 bug!官方记录的语法不允许空的目标列表,并且对于空的()
你确实得到了一个错误。看错误 23275;它被认为是无害的错误:
首先是认识到这种情况已经存在很长时间并且是无害的。
另请参阅为什么分配给空列表有效但分配给空元组无效?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)