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