在Python中创建一个可选的参数

时间:2015-06-18 19:15:59

标签: python arguments

我正在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'] 然后它将使用值

1 个答案:

答案 0 :(得分:1)

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

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

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