什么是高级函数?
举个例子?
Python的内置函数中有一个函数"abs()",那我调用abs()函数来做个简单的测
print(abs(-10))
结果——————>10
那么结果为什么是10,因为这个函数的作用是求绝对值,我在换另外一种方法进行调用
a=abs(-10)
print(a)
结果——————>10
这个结果还是10,有么有发现,我把abs()函数本身赋值给了变量a,也就是说,我打印输出的是变量a,结果和打印函数一样,在这里我得出一个结论,函数本身可以赋值给变量,那么我在做一个小测试
a=abs
print(a(-10))
结果——————>10
把函数直接赋值给变量a,然后再用变量a去使用,结果输出的还是10,说明变量a现在已经指向了abs
函数本身。直接调用abs()
函数和调用变量a()
完全相同。
其实我在使用a的时候a会变成abs,也就是a就是abs,也就是函数名就是变量
那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()
这个函数,完全可以把函数名abs
看成变量,它指向一个可以计算绝对值的函数!
如果把abs
指向其他对象,会有什么情况发生?
abs = 10
>>> abs(-10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
把abs指向10的时候,就无法通过abs(-10)调用这个函数,因为这个函数指向的不是求绝对值,而是整数10,所以调用不成功。
下面做一个小demo
def add(a,b,c):
retrrn c(a)+c(b)
a = -5
b = 10
c = abs
c(a)+c(b) = abs(-5)+abs(10) == 15
return 15
我们在调用add(a,b,c)的时候,参数a,b,c就会跟着定义,计算出的结果自然就是返回的值
做个总结
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,我们成为高级函数