Python Multiple Assignment Statements In One Line

后端 未结 4 1931
不知归路
不知归路 2020-12-02 20:35

(Don\'t worry, this isn\'t another question about unpacking tuples.)

In python, a statement like foo = bar = baz = 5 assigns the variables foo, bar, and

4条回答
  •  独厮守ぢ
    2020-12-02 20:44

    All credit goes to @MarkDickinson, who answered this in a comment:

    Notice the + in (target_list "=")+, which means one or more copies. In foo = bar = 5, there are two (target_list "=") productions, and the expression_list part is just 5

    All target_list productions (i.e. things that look like foo =) in an assignment statement get assigned, from left to right, to the expression_list on the right end of the statement, after the expression_list gets evaluated.

    And of course the usual 'tuple-unpacking' assignment syntax works within this syntax, letting you do things like

    >>> foo, boo, moo = boo[0], moo[0], foo[0] = moo[0], foo[0], boo[0] = [0], [0], [0]
    >>> foo
    [[[[...]]]]
    >>> foo[0] is boo
    True
    >>> foo[0][0] is moo
    True
    >>> foo[0][0][0] is foo
    True
    

提交回复
热议问题