在Python中设置一个可选参数

在Python中设置一个可选参数,python,arguments,Python,Arguments,我正在用CAD程序中的GUI框制作一个脚本,用户在视口中选择大约7个不同的曲面。然后,当用户点击“OK”时,我将这些值传递给另一个函数 传递给它的函数如下所示 def MeshingTools(od_idSurf, trgSurf, PipeBodySurf, sealSurf, threadSurf, BodySurf, cplgEndSurf): 问题是:如果用户不需要选择这些曲面中的一个,我会收到一个错误消息,MeshingTools()正好接受7个非关键字参数(给定2个) 我怎样才能避

我正在用CAD程序中的GUI框制作一个脚本,用户在视口中选择大约7个不同的曲面。然后,当用户点击“OK”时,我将这些值传递给另一个函数

传递给它的函数如下所示

def MeshingTools(od_idSurf, trgSurf, PipeBodySurf, sealSurf, threadSurf, BodySurf, cplgEndSurf):
问题是:如果用户不需要选择这些曲面中的一个,我会收到一个错误消息,
MeshingTools()
正好接受7个非关键字参数(给定2个)

我怎样才能避开这个问题

更新:

我尝试了关键字参数,但没有得到我需要的

def网格工具(**kwargs):
打印kwargs

当我只选择1个曲面时,我得到以下结果

{'PipeBodySurf':(mdb.models['FullCAL4'].rootAssembly.instances['PinNew-1'].edges[151],mdb.models['FullCAL4'].rootAssembly.instances['PinNew-1'].edges[153])

如果我尝试打印PipeBodySurf,它会说全局名称没有定义

有什么想法吗

最终更新(已解决)


现在我看到,
**kwargs
创建了一个字典,因此在代码的其余部分中不只是使用参数名,而是必须使用
kwargs['parameter']
,然后它将使用值

您可以使用带有
*
操作的任意参数传递:

def MeshingTools(*args):
  for i in args:
      #do stuff with i  

函数可以使用前面有一个或两个
*
字符的特殊参数来收集任意数量的额外参数。(
*
用于位置参数,
***
用于关键字参数)

您是如何将值传递给函数的?您是否尝试过将问题标题粘贴到谷歌搜索中?TigerhawkT3,是的,但我只能找到可以覆盖值的地方,而不是我想要的如果关键字参数不满足您的需要,您需要告诉我们您尝试过什么,以及您不喜欢它们的地方。我向您保证这些信息随时可用。如果您不希望代码覆盖值,请不要告诉它。如果你调查一下这个问题,你可能会得到很好的帮助。如果没有评论就投了反对票,那么人们应该会损失100分。为什么要投否决票?!答案相当简单。关键字参数应该被提及,如果不是首选的话。@JohnKugelman是的,你是对的,刚刚添加的@谢谢,我也应该提到关键字参数。