擅长:python、mysql、java
<p>Python不做函数重载。这是它是一种松散类型语言的结果。相反,您可以指定未知数量的参数,并在函数逻辑中处理它们的解释。</p>
<p>有几种方法可以做到这一点。可以指定特定的可选参数:</p>
<pre><code>def func1(arg1, arg2=None):
if arg2 != None:
print "%s %s" % (arg1, arg2)
else:
print "%s" % (arg1)
</code></pre>
<p>我们称之为:</p>
<pre><code>>>> func1(1, 2)
1 2
</code></pre>
<p>或者可以指定未知数量的未命名参数(即在数组中传递的参数):</p>
<pre><code>def func2(arg1, *args):
if args:
for item in args:
print item
else:
print arg1
</code></pre>
<p>我们称之为:</p>
<pre><code>>>> func2(1, 2, 3, 4, 5)
2
3
4
5
</code></pre>
<p>或者可以指定未知数量的命名参数(即在字典中传递的参数):</p>
<pre><code>def func3(arg1, **args):
if args:
for k, v in args.items():
print "%s %s" % (k, v)
else:
print arg1
</code></pre>
<p>我们称之为:</p>
<pre><code>>>> func3(1, arg2=2, arg3=3)
arg2 2
arg3 3
</code></pre>
<p>您可以使用这些构造来产生您在重载中寻找的行为。</p>