为什么不分配一个空列表(例如[] =“”)错误?

发布于 2021-01-29 19:36:31

在python 3.4中,我输入

[] = ""

并且工作正常,不会引发异常。虽然当然[]不等于""事后。

[] = ()

也可以。

"" = []

引发异常,但是,

() = ""

引发异常,但是。发生什么了?

关注者
0
被浏览
76
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您不是为了平等而比较。您正在 分配

    Python允许您分配给多个目标:

    foo, bar = 1, 2
    

    将两个值分别分配给foobar。您只需要在右侧有一个 序列可迭代 ,在左侧有一个名称列表或元组。

    当您这样做时:

    [] = ""
    

    您为 名称列表分配了一个 序列(空字符串仍然是序列)。

    本质上与执行此操作相同:

    [foo, bar, baz] = "abc"
    

    最终以foo = "a"bar = "b"和结束baz = "c",但字符数减少了。

    但是,您不能将其分配给字符串,因此""在分配的左侧永远不会起作用,并且始终是语法错误。

    请参阅 赋值语句
    文档

    赋值语句评估表达式列表(请记住,它可以是单个表达式或逗号分隔的列表,后者产生一个元组),并将单个结果对象从左到右分配给每个目标列表。

    将对象分配给目标列表( 可选地用括号或方括号括起来)的 方式如下所述。

    强调我的

    Python不会为空列表引发语法错误实际上是一个错误!正式记录的语法不允许有空的目标列表,并且对于空的目标,()确实会出错。见错误23275
    ; 它被认为是无害的错误:

    起点是认识到这种情况已经存在很长时间并且是无害的。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看