【发布时间】:2015-06-18 19:15:59
【问题描述】:
我在 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'] ,而不是在其余代码中仅使用参数名称,然后它将使用值
【问题讨论】:
-
如何将值传递给函数?
-
您是否尝试过将问题的标题粘贴到 Google 搜索中?
-
TigerhawkT3,是的,但我只能找到可以覆盖值的位置,而不是我想要的
-
如果关键字参数不能满足您的需求,您需要告诉我们您尝试过哪些以及您不喜欢它们的哪些方面。
-
我向您保证,这些信息很容易获得。如果您不希望代码覆盖值,请不要告诉它。通过查看official Python tutorial,您可能会得到很好的服务。