add_digits2(1)(3)(5)(6)(0)
应该将所有数字加起来并在达到0
时停止。
输出应为15
下面的代码有效,但是使用了全局变量。
total = 0
def add_digits2(num):
global total
if num == 0:
print(total)
else:
total += num
return add_digits2
结果是正确的,但是需要使用全局变量来做同样的事情。
答案 0 :(得分:3)
您可以做的一件事是使用partial
:
from functools import partial
def add_digits2(num, total=0):
if num == 0:
print(total)
return
else:
total += num
return partial(add_digits2, total=total)
add_digits2(2)(4)(0)
答案 1 :(得分:1)
您只需传递*args
作为参数并返回总和
def add_digits2(*args):
return sum(args)
add_digits2(1, 3, 5 ,6)
答案 2 :(得分:1)
您还可以使用类,使用__call__
方法来获得此行为:
class Add_digits:
def __init__(self):
self.total = 0
def __call__(self, val):
if val != 0:
self.total += val
return self
else:
print(self.total)
self.total = 0
add_digits = Add_digits()
add_digits(4)(4)(0)
# 8
add_digits(4)(6)(0)
# 10
尽管我仍然不明白为什么你要这么做...
答案 3 :(得分:0)
当问这样的问题时,真的很难说出他们是什么,但是总数可以存储在function属性中。像这样
header("Access-Control-Allow-Origin: *");