如何在python中重载函数?
在python中,我似乎无法重载以下函数:如何在python中重载函数?,python,Python,在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) : subproc
#!/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;
例如,当我打电话给:
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)
回溯(最近一次呼叫最后一次):
文件“sample.py”,第11行,在
mymodules.my_函数(“a”、“b”)
TypeError:my_函数()正好接受4个参数(给定2个)
为什么它尝试调用带有4个参数的函数?因为函数重载在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;
它将自动检测您输入的变量,并在默认情况下用“无”填充未输入的变量。当然,要使其工作,变量的值决不能为NonePython不支持设计上的重载。函数在Python中不是这样工作的。它们是对象,就像其他任何东西一样,因此一次只能调用一个
my_function
。因为这是定义所有三个函数之后唯一存在的版本,因为它是最后定义的。不清楚你为什么认为你可以这么做。