Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中实现重载函数而不使用条件语句的最佳方法是什么?_Python_Overloading - Fatal编程技术网

在python中实现重载函数而不使用条件语句的最佳方法是什么?

在python中实现重载函数而不使用条件语句的最佳方法是什么?,python,overloading,Python,Overloading,在我的应用程序中,我有一个要求,即我需要使用相同的名称调用一个方法,但使用不同的数字参数和实现。另外,我不想添加任何条件语句来检查接收到的参数并执行所需的实现。这将是直接的,如java,C++的语言,其中函数重载是可能的。p> 我研究了提供这种支持的python包,但是应用程序依赖于这种外部库来处理用例似乎是一种开销 以下是我努力实现的目标: def foo(x): do_something def foo(x,y): do_something_else 不执行以下操作: def

在我的应用程序中,我有一个要求,即我需要使用相同的名称调用一个方法,但使用不同的数字参数和实现。另外,我不想添加任何条件语句来检查接收到的参数并执行所需的实现。这将是直接的,如java,C++的语言,其中函数重载是可能的。p> 我研究了提供这种支持的python包,但是应用程序依赖于这种外部库来处理用例似乎是一种开销

以下是我努力实现的目标:

def foo(x):
   do_something

def foo(x,y):
   do_something_else
不执行以下操作:

def foo(x, y=None):
    if not y:
         do_something
    else:
         do_something_else

您可以为函数设置默认参数。这需要检查默认参数的值,这是我试图避免的。您还可以添加一个要求,即您不信任PyPI中的包进行生产工作,因为,例如,在列表中的第二个示例中,@Andriy drozduk声称“multi-method”不是线程安全的。您可以为函数设置默认参数。这需要检查默认参数的值,这是我试图避免的。您还可以添加一个要求,即您不信任PyPI中用于生产工作的包,因为,例如,在列表中的第二个示例中,@andriydrozduk声称“multimemethod”不是线程安全的。