【发布时间】:2018-07-04 00:26:32
【问题描述】:
在 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;
例如当我打电话时:
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 个参数的函数?
【问题讨论】:
-
Python 不支持设计重载。
-
这不是函数在 python 中的工作方式。它们是对象,就像其他任何东西一样,所以一次只能调用一个
my_function。 -
因为这是定义所有三个之后存在的唯一版本,因为它是最后定义的。不清楚你为什么认为你可以这样做。
标签: python