多参数函数正确使用*args/**kwargs

2024-07-07 07:45:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个函数:

def hexify_string(aString):
    #code for string2hexa conversion

…我想要一个接受一个或多个(数量未定义)参数的函数,并返回参数总和的十六进制表示形式。在

^{pr2}$

有没有使用*args/**kwars的方法?在


Tags: 函数for参数数量stringdefcode形式
2条回答

这是你想要的吗?收集任意数量的参数,这些参数都应该是字符串。将每个字符串传递给hexify_string(),后者返回一个整数。求和整数并返回和。在

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

当您想要收集参数时,您希望对它们都一视同仁,而且您不知道会有多少个参数,这正是*args语法的初衷。这是一个完美的用例。在

**kwargs收集name=value参数,这里不需要这些参数。在

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

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

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

相关问题 更多 >