【问题标题】:if python assignments don't return a value how can we do a = b = c = 42如果python赋值不返回值我们怎么能做a = b = c = 42
【发布时间】:2014-03-23 04:54:17
【问题描述】:

看了这两个问题,

我有这个问题:

a = b = c = 42 如何将42 传播到左侧而不在每一步返回值?

【问题讨论】:

    标签: python


    【解决方案1】:

    因为a special exception in the syntax,专门针对那个确切的用例。查看 BNF:

    assignment_stmt ::=  (target_list "=")+ (expression_list | yield_expression)
    

    注意(target_list "=")+

    【讨论】:

      【解决方案2】:

      这种方式的链式赋值不需要赋值返回值。它是一种特殊形式的赋值语句,将对象绑定到多个名称。

      【讨论】:

        【解决方案3】:

        这是一个 python 功能。来自Python Tutorial

        一个值可以同时赋值给多个变量:

        >>> x = y = z = 0  # Zero x, y and z
        >>> x
        0
        >>> y
        0
        >>> z
        0
        

        注意,事实上,赋值不会返回任何值。你不能这样做

        a = b = (c = 2)
        

        【讨论】:

          猜你喜欢
          • 2021-11-20
          • 1970-01-01
          • 1970-01-01
          • 2020-01-14
          • 1970-01-01
          • 2017-05-16
          • 2011-06-19
          • 2022-10-24
          • 1970-01-01
          相关资源
          最近更新 更多