在python中我似乎无法重载以下函数:
#!/usr/bin/env python
import subprocess
def my_function (a) :
subprocess.call(['proc', a])
return;
def my_function (a, b) :
subprocess.call(['proc','-i',a,b])
return;
def my_function (a, b, c, d) :
subprocess.call(['proc','-i',a,b,'-u',c,d])
return;
E.g。当我打电话给:
mymodules.my_function("a", "b")
我明白了:
Traceback (most recent call last):
File "sample.py", line 11, in <module>
mymodules.my_function("a", "b")
TypeError: my_function() takes exactly 4 arguments (2 given)
为什么它尝试调用4个参数的函数?
答案 0 :(得分:2)
因为函数的重载在python中不像在其他语言中那样。
我会做什么:
def my_function (a, b=None, c=None, d=None) :
if b is None:
subprocess.call(['proc', a])
elif c is None:
subprocess.call(['proc','-i',a,b])
else:
subprocess.call(['proc','-i',a,b,'-u',c,d])
return;
它会自动检测您输入的变量,并填写默认情况下不输入的变量。当然,为了使它起作用,你的变量绝不能取为None
的值