# 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
# 变量可以指向函数
abs(-10) # 10
abs # <built-in function abs>
# ------abs(-10)是函数调用,而abs是函数本身
x = abs(-10)
print(x) # 10
# 函数名也是变量
f = abs
print(f) # <built-in function abs>
print(f(-10)) # 10
# 说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同
# abs = 10
# abs(-10) # TypeError: 'int' object is not callable
# abs指向10后,就无法通过abs(-10)调用该函数了!因为abs这个变量已经不指向求绝对值函数
# 传入函数
# 既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
def add(x, y, f):
return f(x) + f(y)
print(add(-5, 6, abs)) # 11