<p>可以使用类似<code>func(**kwargs)</code>的语法调用带有动态参数的函数,其中<code>kwargs</code>是命名参数的名称/值映射字典。在</p>
<p>我还将global <code>frequency</code>列表重命名为<code>frequencies</code>,因为<code>if frequency in frequency</code>行没有什么意义。在</p>
<pre><code>class geoProcessClass():
def __init__(self, geoTaskHandler, startDate, frequency, frequencyMultiple=1, *args):
self.interval = self.determineTimeDelta(frequency, frequencyMultiple)
def determineTimeDelta(self, frequency, frequencyMultiple):
frequencies = ["hours", "days", "weeks"]
if frequency in frequencies:
kwargs = {frequency: frequencyMultiple}
else:
kwargs = {"days": 1}
return datetime.timedelta(**kwargs)
</code></pre>
<p>不管怎样,在文体上,人们通常不赞成默默地纠正来电者犯下的错误。如果来电者用无效的参数打电话给你,你应该立刻大声地失败,而不是试着一直咕噜咕噜地叫。我建议不要使用<code>if</code>语句。在</p>
<p>有关可变长度和关键字参数列表的详细信息,请参阅:</p>
<ul>
<li><a href="http://docs.python.org/tutorial/controlflow.html#more-on-defining-functions" rel="nofollow noreferrer">The Official Python Tutorial</a></li>
<li><a href="http://www.python.org/dev/peps/pep-3102/" rel="nofollow noreferrer">PEP 3102: Keyword-Only Arguments</a></li>
</ul>