gpt4 book ai didi

python - 使用默认参数传递多个元组

转载 作者:行者123 更新时间:2023-12-01 02:35:57 24 4
gpt4 key购买 nike

我意识到这可能是一个有点奇怪的请求,但我希望有一个方法接受 Python 3 中任意数量的元组,每个元组都有默认参数。

我想这样做的原因是因为我正在为我们的团队编写脚本功能,并且希望用户可以轻松理解可调用的方法。例如,如果用户想要调用 2D 绘图方法,我希望方法参数如下所示:

plot2D(('sweepvar1', start1, stop1, npts1=None, step1=None),
('sweepvar2', start2, stop2, npts2=None, step2=None))

所以用户调用类似这样的内容

plot2D(('var1', 0.0, 1.0, npts1=101), ('var2', 0.5, 0.6, step2=0.001))

本质上困难来了,因为我不知道用户是否想要指定测量的点数或步长,但我们需要包括这两个选项。理想情况下,我希望避免强制用户指定两者,或者创建一个新变量作为在 nptsstep 之间进行选择的标志。

我对默认参数*args**kwargs有些熟悉,但我似乎想不出来上述问题的干净解决方案。

预先感谢您的帮助!

最佳答案

这似乎很难按原样实现,但是您可以创建一个辅助函数,它包装参数并为每个元组创建一个位置和关键字参数的元组。称之为mkarg(提出论点)

def mka(*args,**kwargs):
return (args,kwargs)

def plot2D(t1,t2):
print(t1,t2)

plot2D(mka('var1', 0.0, 1.0, npts1=101), mka('var2', 0.5, 0.6, step2=0.001))

此测试返回:

(('var1', 0.0, 1.0), {'npts1': 101}) (('var2', 0.5, 0.6), {'step2': 0.001})

现在繁琐的工作是在plot2D中处理这些参数,但至少用户有一个清晰的界面。

替代方案:

如果您确实需要元组,您可以检查元组参数的len,如果不够长,则使用None来完成。如果第二个“可选”值比第一个值使用得更少,那就太好了。对于少量的“可选”值来说很实用。

def plot2D(tuple1,tuple2):
tuple1 += (None,)*(5-len(tuple1))
tuple2 += (None,)*(5-len(tuple2))

plot2D(('var1', 0.0, 1.0, 101), ('var2', 0.5, 0.6, None, 0.001))

关于python - 使用默认参数传递多个元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226951/

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