代码之家  ›  专栏  ›  技术社区  ›  U13-Forward

为什么pythonshell只允许“print”输出未打包的python

  •  1
  • U13-Forward  · 技术社区  · 6 年前

    例子:

    >>> l=[1,2,3]
    >>> *l
    SyntaxError: can't use starred expression here
    >>> print(*l)
    1 2 3
    >>> 
    

    2 回复  |  直到 6 年前
        1
  •  2
  •   Jonas Wolff    6 年前

    因为它相当于与列表相对应的位置arumings,所以当你没有将它调用到某个可以接受所有参数的地方时,这是没有意义的,因为没有地方可以放置参数

    f、 十。

    print(*[1,2,3])
    # is the same as
    print(1,2,3)
    

    *[1,2,3]
    #is the same as - and do not think of it as a tuple
    1,2,3 # here how ever that makes it a tuple since tuples not defined by the parenthasies, but the point is the same
    

    不过,在python3.5中,tuple、list、set和dictionares中有一个小小的例外,但这是一个例外,也可以用来分配剩余的值,python怎么能看到您不这样做呢。

    编辑 我没有删除我的答案,因为我意识到只有最后一部分是错的。

        2
  •  1
  •   Sraw    6 年前

    我认为这实际上是一个关于理解的问题 *l 或者一般来说 *ListLikeObject .

    *ListLike对象 不是有效的表达式。这并不意味着“哦,请打开清单”。

    例如 2 *[1, 2, 3] (众所周知,它将输出 [1, 2, 3, 1, 2, 3] ). 如果一个人 *[1, 2, 3] 2 1 2 3 它是无效的(某种程度上类似于除以0)?

    所以基本上, 只是一个语法糖,可以帮助你传递参数。您不需要手动解包列表,但解释器会为您解包。但是 基本上 它还在过去 而不是一个元组。