【问题标题】:Python: What do double parenthesis do?Python:双括号有什么作用?
【发布时间】:2012-05-01 13:08:28
【问题描述】:

谁能告诉我为什么括号在这里加倍?

self.__items.append((module, item))

【问题讨论】:

    标签: python syntax parentheses


    【解决方案1】:

    内括号创建一个tuple

    >>> type(('a', 'b'))
    <type 'tuple'>
    

    从技术上讲,可以创建不带括号的元组:

    >>> 'a', 'b'
    ('a', 'b')
    

    但有时他们需要括号:

    >>> 'a', 'b' + 'c', 'd'
    ('a', 'bc', 'd')
    >>> ('a', 'b') + ('c', 'd')
    ('a', 'b', 'c', 'd')
    

    在您的情况下,它们需要括号来区分元组和函数的逗号分隔参数。例如:

    >>> def takes_one_arg(x):
    ...     return x
    ... 
    >>> takes_one_arg('a', 'b')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: takes_one_arg() takes exactly 1 argument (2 given)
    >>> takes_one_arg(('a', 'b'))
    ('a', 'b')
    

    【讨论】:

      【解决方案2】:

      它将元组 (module, item) 作为单个参数传递给函数。如果没有额外的括号,它将传递 moduleitem 作为单独的参数。

      【讨论】:

      • 到目前为止提供的所有答案都应该对 OP 有所帮助。我个人最喜欢这个,因为它不会引发关于元组创建的迂腐警报。干得好!
      • @JohnY 知道它会创建一个元组的人显然不会在这里提出这个问题。
      • @Hi-Angel:我不认为你理解我的评论。我所指的“学究警报”是整个“元组由逗号而不是括号创建”的东西。元组学究喜欢引起人们对这一点的关注,并且似乎一有机会就这样做。当然,这是真的。但对我来说,它过于技术性,尤其是作为对初学者的解释。我喜欢这个答案的地方在于它的措辞强调这一点。
      • @JohnY 哦,好吧,实际上我在第一次阅读此答案时错过了 tuple 单词,所以我就像«Eh?为什么大括号是一个参数?»。无论如何,我对 Python 有点缺乏经验,尽管如此,我还是喜欢下面关于逗号制作元组的技术解释。
      【解决方案3】:

      这和说的完全一样:

      parameter = (module, item)
      self.__items.append(parameter)
      

      即在将元组用作append() 的单个参数之前,内部括号首先创建一个元组。

      【讨论】:

      • 除了你不需要在你的例子中的元组周围的括号...参数=模块,项目就可以了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多