在Python中使参数可选

2024-10-04 11:30:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用一个CAD程序中的GUI框制作一个脚本,用户在视口中选择大约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'] ,然后它将使用这些值


Tags: instances函数用户参数modelsdef关键字kwargs
1条回答
网友
1楼 · 发布于 2024-10-04 11:30:04

您可以使用与*操作一起传递的任意参数:

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

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

相关问题 更多 >