我想编写一个函数来处理[列表参数]和[几个单独的参数]
例如:合并几个字符串。 我如何编写单个函数(至少是相同的名称,如 C++ 中的重载)
def merge_1(*list):
return ''.join(list)
def merge_2(list):
return ''.join(list)
print(merge_1('a','b')) #get 'ab'
print(merge_2(['a','b'])) #also get 'ab'
最佳答案
要获得与 C++ 重载等效的效果,请将 merge
定义为接受任意数量的参数并检查它们:
def merge(*args):
if len(args) == 1:
return ''.join(args[0])
else:
return ''.join(args)
但是,这样做不是很Pythonic。 Python 函数可以自由利用它们可以用单个或多个参数灵活调用的事实。
例如,如果您选择使 merge
成为一个单参数函数,则可以使用 [...]
语法,merge([str1, str2, str3])
。同样,如果您选择使 merge
成为一个多参数函数,它仍然可以通过使用 *
语法的预制列表来调用,例如合并(*list_of_strings)
。 merge
是否接受单个或多个参数由您决定,并且可以根据更常见的用例来选择。您的来电者很容易适应这两种情况。
关于python - 如何避免在 python 中编写两个重复函数 f(*list) 和 f(list=[]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410958/