1

我有一个这样的功能:

def hexify_string(aString):
    #code for string2hexa conversion

...并且我希望有一个函数接受一个或多个(数量未定义)参数,并返回参数总和的十六进制表示。

def hexify(a,b...n):
    #map hexify_string to all the parameters, and return the sum of them

有没有办法使用 *args / **kwars 做到这一点?

4

2 回答 2

2

这是你想要的吗?收集任意数量的参数,它们都应该是字符串。传递每个hexify_string()返回整数的字符串。对整数求和并返回总和。

def hexify(*lst):
    n = sum(hexify_string(s) for s in lst)
    return n

当你想收集参数时,你想把它们都一样对待,你不知道会有多少,这正是*args语法的目的。这是一个完美的用例。

**kwargs收集name=value论点,你不希望这里有任何论点。

于 2013-02-02T00:29:15.400 回答
2

*args获取所有非关键字参数并将它们转换为列表。您可以映射hexify_string到列表的每个元素,然后返回列表中所有元素的总和。

def hexify(*args);
    return sum(map(hexify_string, args)

这是假设您的hexify_string函数返回一个十六进制值,而不是一个字符串。

于 2013-02-02T00:30:40.150 回答