如何手动实现在python中添加整数的函数重载?

Posted

技术标签:

【中文标题】如何手动实现在python中添加整数的函数重载?【英文标题】:How to implement manually a function overloading of adding integers in python? 【发布时间】:2021-12-29 02:28:57 【问题描述】:

我尝试了一个挑战,但似乎无法正确完成。我知道 Python 不支持函数重载,但我见过一些手动完成的。

我使用两个参数来添加 2 个数字,并使用三个参数来添加 3 个数字,然后使用一个大小为 4 的数组来添加 4 个数字,但我似乎无法超过两个数字的总和。我只是使用我的其他代码作为我如何想出我的代码的参考。


    def add(a, b):
        sum1 = sum(a,b)
        return sum1

    def add(c,d, e):
        sum2 = sum(c,d,e)
        return sum2

    def add(f,g,h,i):
        sum3 = sum(f,g,h,i)
        return sum3

a,b = int(input("Enter two numbers: ").split())
print("The sum is: ", add(a,b))

c,d,e = int(input("Enter three numbers: ").split())
print("The sum is: ", add(c,d,e))

f,g,h,i  = [int(x) for x in input("Enter four numbers: ").split()]
print("The sum of is: ", add(f,g,h,i))

【问题讨论】:

查看blog 问题是什么? 【参考方案1】:

如果您只想在函数中添加 n 次数字,那么您可以这样做

如果我们保留 2 个数字,则不需要

def add(a, b, *args):
    return a+b+sum(args)

或者你可以使用

def add(*args):
    return sum(args)

现在您可以添加任意数量的数字

其他方式

def add(**kwargs):
    a = kwargs.get('a', 0)
    b = kwargs.get('b', 0)
    return a+b # or sum(kwargs.values())

print(add(a=1, b=2)) 
# if you want another variable in function so you need to write that also

【讨论】:

有没有办法手动输入参数,就像我想在代码中显示所有变量一样? 你可以把参数放在函数中,但是在函数里面如果你看到参数你可以使用 print(args) 或者如果你想用这种方式说添加函数add(a=1,b=2,c=3....) 即定义变量名称也可以使用def add(**kwargs): return sum(kwargs.values()),如果你使用print(kwargs),你可以看到那里定义的所有变量 add(a=1,b=2,c=3....) 这是否意味着 a 的值为 1,b 的值为 2.. 等等?

以上是关于如何手动实现在python中添加整数的函数重载?的主要内容,如果未能解决你的问题,请参考以下文章

STL详解—— list的模拟实现

Lua中的函数重载?

Python 没有函数重载?如何用装饰器实现函数重载?

如何通过手动查询重现:[Amazon](500310) 无效操作:找不到从“未知”到整数的转换函数;

手动实现applycallbind

C++||函数及类