python函数的嵌套 和 python不需要重载的原因
函数的嵌套-递包
python中循环可以嵌套,当然方法也是可以嵌套的啦~
#函数的嵌套 递包
#如果我们需要在函数里面需要嵌套函数,最里面的函数是执行功能的代码,那么我们如果需要返回这个函数时只要返回这个函数名即可
例如1:
def fun1(a):
def fun2(b):
def fun3(c):
return a+b+c
return fun3
return fun2
sum = fun1(2)(1)(1)
#调用函数
if __name__ == "__main__":
print(sum)
#输出:4
#如果我们直接调用,比如:fun1(1)时,返回:<function fun1.<locals>.fun2 at 0x0000018603BE5598>
表示fun1()中还有fun2()
fun1() 相当于 fun2
fun2() 相当于 fun3
例如2:
# def fun1(a):
# def fun2():
# def fun3():
# return a
# return fun3
# return fun2
# sum1 = fun1(2)()()
# print(sum1)
返回:<function fun1.<locals>.fun2 at
方法的重载:
java中,在同一个类中,
我们将名字相同,参数列表不同的两个(或多个)方法
称为重载方法。
参数列表的不同体现在以下两点:
1 参数的类型不同
2 参数的个数不同
方法参数列表的不同,是编译器用来区分调用哪一个
重载方法的依据。
python不需要重载的原因
函数重载主要是为了解决两个问题:
1.可变参数类型
2.可变参数个数
并且函数重载一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。那么对于情况1,函数功能相同,但是参数类型不同,对于这种情况python根本不需要进行处理,因为Python可以函数可以接受任意类型的参数,所以如果函数功能相同,只是不同的参数类型在python中没有什么不同,所以没有必要做成两个函数就没有必要使用函数的重载。
对于情况2,如果是函数拥有同样的功能只是参数个数不同,这种情况对于Python同样不需要函数的重载,因为Python中存在缺省参数,对于个数不确定的函数采用缺省参数的方法就能完成所有的工作。
函数重载为了解决的两个问题在Python中都不是问题因此Python就没有再进行函数重载的必要了,所以Python中不存在函数的重载