如何在python中返回ADD AND的结果?

时间:2019-03-15 12:35:06

标签: python

我正在尝试编写一个将for循环中的值求和的函数。

我尝试过:

def get_total_items(self):
    return totalnum = totalnum + item['quantity'] for item in self.cart.values()

我遇到语法错误,但是我不确定为什么这对我来说是正确的。

4 个答案:

答案 0 :(得分:3)

正确的方法是使用生成器表达式the sum function。生成器表达式与您尝试的循环类似,但受括号限制(当它是唯一参数时,可以与调用括号相同,例如sum):

def get_total_items(self):
    return sum(item['quantity'] for item in self.cart.values())

请注意,totalnum从未分配(您不能作为return的一部分进行分配),但不一定要分配;直接返回sum中的值,而根本不将其存储在命名变量中。

如果totalnum是必须更新的某些现有全局变量,则需要将其分成三行,其中的一个要声明totalnum全局变量(因此由于以下原因它不会成为局部变量)被分配),将其递增totalnum,将其递增return

def get_total_items(self):
    global totalnum
    totalnum += sum(item['quantity'] for item in self.cart.values())
    return totalnum

答案 1 :(得分:2)

根据[Python 3]: The return statement

  

return_stmt :: =“返回” [expression_list]

totalnum = totalnum + item['quantity'] for item in self.cart.values()不是表达式而是语句,因此 SynraxError

一种方法是使用[Python 3]: sum(iterable[, start])

def get_total_items(self):
    return sum(item["quantity"] for item in self.cart.values())

“旧样式”方法:

def get_total_items(self):
    totalnum = 0
    for item in self.cart.values():
        totalnum += item["quantity"] 
    return totalnum

答案 2 :(得分:2)

使用现有的sum()函数。

sum(item['quantity'] for item in self.cart.values())

或者,如果您需要一个起始值:

sum((item['quantity'] for item in self.cart.values()), 1000.0) #start summing with 1000.0

如果您绝对必须自己实施:

def get_total_items(self):
    totalnum = 0
    for item in self.cart.values():
        totalnum += item['quantity'] 
    return totalnum

答案 3 :(得分:-1)

您为什么不这样做:

def get_total_items(self):
    for item in self.cart.values():
        totalnum += item['quantity']
    return totalnum