gpt4 book ai didi

python - 传递两个可变参数列表

转载 作者:行者123 更新时间:2023-11-28 19:45:19 25 4
gpt4 key购买 nike

我知道这很管用:

def locations(city, *other_cities): 
print(city, other_cities)

现在我需要两个变量参数列表,比如

def myfunction(type, id, *arg1, *arg2):
# do somethong
other_function(arg1)

#do something
other_function2(*arg2)

但是Python不允许使用这个两次

最佳答案

这是不可能的,因为 *arg 从该位置捕获所有位置参数。因此根据定义,第二个 *args2 将始终为空。

一个简单的解决方案是传递两个元组:

def myfunction(type, id, args1, args2):
other_function(args1)
other_function2(args2)

并这样调用它:

myfunction(type, id, (1,2,3), (4,5,6))

如果这两个函数需要位置参数而不是单个参数,您可以这样调用它们:

def myfunction(type, id, args1, args2):
other_function(*arg1)
other_function2(*arg2)

这样做的好处是您可以在调用 myfunction 时使用任何 可迭代对象,甚至是生成器,因为被调用的函数永远不会与传递的可迭代对象联系。


如果你真的想使用两个可变参数列表,你需要某种分隔符。以下代码使用 None 作为分隔符:

import itertools
def myfunction(type, id, *args):
args = iter(args)
args1 = itertools.takeuntil(lambda x: x is not None, args)
args2 = itertools.dropwhile(lambda x: x is None, args)
other_function(args1)
other_function2(args2)

它会像这样使用:

myfunction(type, id, 1,2,3, None, 4,5,6)

关于python - 传递两个可变参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11030383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com