我正在CAD程序中使用GUI Box制作脚本,并且用户在视口中选择大约7个不同的表面。然后,当用户点击“确定”
时,我将这些值传递给另一个函数传递给它的函数看起来像这样
def MeshingTools(od_idSurf, trgSurf, PipeBodySurf, sealSurf, threadSurf, BodySurf, cplgEndSurf):
问题是:如果用户不需要选择其中一个表面,我会收到错误消息,MeshingTools()
正好接受7个非关键字参数(给定2个)
如何解决这个问题?
更新:
我尝试过关键字参数,并没有得到我需要的东西。
def MeshingTools(**kwargs):
print 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']
然后它将使用值
答案 0 :(得分:1)
您可以使用*
操作传递任意参数:
def MeshingTools(*args):
for i in args:
#do stuff with i
函数可以使用前面带有一个或两个*
字符的特殊参数来收集任意数量的额外参数。 (*
表示位置参数,**
表示关键字参数)