三种方法论:
1、面向过程:(过程:没回返回值的函数)找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程。需要把大过程拆分成各个小步骤。
2、函数式编程:函数式=编程语言定义的函数+数学意义的函数
通俗来讲,函数式就是编程语言去实现数学函数,这种函数内对象是永恒不变的,要么参数是函数,要么返回值是函数,没有for和while循环,所有的循环都由递归去实现,无边的赋值(即不用变量去保存状态),无赋值即不改变。
把函数当做参数传个另外一个函数
def foo(n): print(n) def bar(name): print('my name is %s'%name) foo(bar('liu')) 输出结果 my name is liu None
foo需要调用bar,所以首先运行的是bar,bar需要对name传参并打印 my name is ** 由于foo并没有返回值return 所以直接打印none
3、面向对象:
--------
高阶函数:满足下列一个条件
1、函数接收的参数是一个函数名
2、返回值中包含函数
----------
尾递归优化
尾调用:在函数的最后一步调用另外一个函数(最后一行不一定是函数的最后一步
)