Python 如何创建3个同名函数?

Python 如何创建3个同名函数?,python,Python,嗨,我想知道如何为我的硬件创建3个同名函数。 解释视频使用了数字相加和乘法的函数(创建3个同名函数,然后调用它们)。 我只需要知道它是如何工作的,剩下的我自己来做。你可以有一个接受可变数量参数的函数 那么什么是多重方法呢?我将给出我自己的定义,正如我逐渐理解的那个样:一个有多个版本的函数,根据参数的类型进行区分。(有些人超越了这一点,还允许通过参数的值来区分版本;我这里不讨论这一点。) 作为一个非常简单的例子,假设我们有一个函数,我们想为两个整数、两个浮点或两个字符串定义它。当然,我们可以将其定

嗨,我想知道如何为我的硬件创建3个同名函数。 解释视频使用了数字相加和乘法的函数(创建3个同名函数,然后调用它们)。
我只需要知道它是如何工作的,剩下的我自己来做。

你可以有一个接受可变数量参数的函数

那么什么是多重方法呢?我将给出我自己的定义,正如我逐渐理解的那个样:一个有多个版本的函数,根据参数的类型进行区分。(有些人超越了这一点,还允许通过参数的值来区分版本;我这里不讨论这一点。)

作为一个非常简单的例子,假设我们有一个函数,我们想为两个整数、两个浮点或两个字符串定义它。当然,我们可以将其定义如下:

def foo(a,b):
如果isinstance(a,int)和isinstance(b,int):
…两个整数的代码。。。
elif isinstance(a,浮点)和isinstance(b,浮点):
…两个浮点数的代码。。。
elif isinstance(a,str)和isinstance(b,str):
…两个字符串的代码。。。
其他:
raise TypeError(“不支持的参数类型(%s,%s)”%(类型(a),类型(b)))
但这种模式变得单调乏味。(它也不是很面向对象,但是,尽管名称为IMO,但multimemethods也不是。)那么使用multimemethoddispatch会是什么样子呢?装饰师是很好的搭配:

从mm导入多重方法
@多方法(int,int)
def foo(a、b):
…两个整数的代码。。。
@多方法(浮动,浮动):
def foo(a、b):
…两个浮点数的代码。。。
@多重方法(str,str):
def foo(a、b):
…两个字符串的代码。。。

Python不允许重载函数(尽管现在可以通过SingleDispatch实现),请检查此处。