【问题标题】:Sometimes why do we have to pass the argument as a tuple in python?有时为什么我们必须在 python 中将参数作为元组传递?
【发布时间】:2020-04-22 13:24:05
【问题描述】:

所以我用python编写了这个简单的程序,它有一个名为num的函数,它接受两个参数作为整数并检查是否有一些是“20”,如果是,则返回True,否则返回@987654324 @ 你会注意到在if 语句中我调用了另一个函数sum 这是python 中的一个内置函数,所以当我尝试在这个函数中传递ab 的值而不传递它们作为 tuple 然后它给了我下面提到的错误,所以我的问题是,为什么当我像这样 sum((a,b)) 而不是这样 @ 传递它们时它会起作用987654330@

 File "c.py", line 8, in <module>
    print(num(220,10))
  File "c.py", line 3, in num
    if sum(a,b) == 20:
TypeError: 'int' object is not iterable
def num(a,b):
    if sum(a,b) == 20:
        return True
    else:
        return False

print(num(220,10))

【问题讨论】:

  • sum() 是一个在一个可迭代的列表中汇总所有整数的函数。所以只需使用“+”运算符(如果 a + b == 20: ...)
  • sum 需要一个可迭代的(列表、元组...):docs.python.org/3/library/functions.html#sum
  • 如果你要列出操作数,这个函数有点没有意义,因为你可以做a+b+...+x 并且更简洁

标签: python function methods tuples


【解决方案1】:

Python sum() 是一个内置函数,它采用 iterable 并返回其中项目的总和。

所以基本上你必须向它传递一个可迭代的对象(作为元组或列表)sum((a,b)),而不是两个单独的对象sum(a, b)

【讨论】:

    【解决方案2】:

    这个其实很简单,使用的时候
    sum((1,3,4,5,6,7))
    您希望它尽可能简单,以便快速了解它会产生什么结果。

    但正如你所见,
    sum(iterable, /, start=0)
    要使用的参数比较多,不用写,但一定要传递。

    快速解决方案?使用可迭代而不是星号参数,并消除知道参数名称以跳过默认值的麻烦(请注意,星号参数必须是函数签名上的最后一个参数)

    【讨论】:

      【解决方案3】:

      当您使用 sum(a,b) 时,它会将 a,b 视为单个对象,因此说“'int' 对象不可迭代,因此我们需要将其作为元组传递,例如 sum((a ,b))。

      谢谢,如果您喜欢我的回答,请点击“侧面有用的回答按钮”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-19
        • 2014-03-12
        • 2022-01-05
        • 2016-05-04
        • 2018-01-08
        • 1970-01-01
        • 1970-01-01
        • 2019-06-20
        相关资源
        最近更新 更多