回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>在Python中,函数的参数是否可以有双重名称?
我的意思是变量名的简短和完整形式。在</p>
<p>我会尽量说清楚的。熟悉Autodesk Maya的每个人都知道
约束的函数。它有一些标志,您可以使用其名称的短格式或长格式:</p>
<blockquote>
<p>maintainOffset(mo), weight(w), layer(l) and so on..</p>
</blockquote>
<p>因此,您可以使用不同的参数名称调用此函数,但结果相同:</p>
<pre><code>cmds.parentConstraint(driverObj, drivenObj, maintainOffset=True, weight=1.0,..)
cmds.parentConstraint(driverObj, drivenObj, maintainOffset=True, w=1.0,..)
cmds.parentConstraint(driverObj, drivenObj, mo=True, weight=1.0,..)
cmds.parentConstraint(driverObj, drivenObj, mo=True, w=True,..)
</code></pre>
<p><strong>如何在Python中实现这种类型的行为</strong>2.7.x?我正在积极使用文档,但仍然找不到答案。在</p>
<p>除此之外,我还为各种类型的约束定义了4个函数:</em></p>
^{pr2}$
<p><em>连接列表:</em></p>
<pre><code>cLst = produceConnectionList(tNodesA, tNodesB)
</code></pre>
<p><em>和一些<strong>包装器的函数:</em></p>
<pre><code>def batchConnect(type = "parentConstraint", ???):
cLst = produceConnectionList(tNodesA, tNodesB)
if type is "parentConstraint": doParentConstraint(cLst, ???)
if type is "orientConstraint": doOrientConstraint(cLst, ???)
if type is "pointConstraint": doPointConstraint(cLst, ???)
if type is "scaleConstraint": doScaleConstraint(cLst, ???)
</code></pre>
<p>但是我不知道如何在这些函数和包装器之间传递值,因为尽管它们有相同数量的参数,但参数的名称和类型稍有不同。在</p>
<p>另外,我想在调用包装器时有机会使用简短和完整的标志名称:</p>
<pre><code>batchConnect("pointConstraint", mo=False, offset=(0,0,0), weight=1)
batchConnect("pointConstraint", maintainOffset=False, o=(0,0,0), w=1)
</code></pre>
<p>必须这样做。在</p>
<pre><code>batchConnect("pointConstraint")
</code></pre>
<p>如果没有参数,则必须使用默认值调用<em>doPointConstraint()</em>。在</p>
<pre><code>batchConnect()
</code></pre>
<p>如果不指定类型和参数,则默认情况下必须使用这些默认值调用<em>doParentConstraint()</em></p>