编程方法论:
面向过程:按照一个固定的流程去模拟解决问题的流程
函数式:编程语言定义的函数 + 数学意义的函数
y = 2*x + 1 函数用编程语言实现
def fun(x):
return 2*x + 1
面向对象:
函数式编程
1. 不可变:不用变量保存状态,不可修改变量
# 函数式编程 # 1. 不可变:不用变量保存状态,不可修改变量 # 非函数式 a = 1 def test1(): global a a += 1 return a # 函数式 n = 1 def test2(): return n + 1
2.函数即“变量”
a.函数可以当参数传递
b.返回值可以式函数名
def foo(n): print(n) def bar(name): print(‘my name is %s‘ % name) foo(bar) foo(bar(‘zhangsan‘))
输出:
<function bar at 0x0000024E4B385C80> my name is zhangsan None
3.高阶函数 :1.函数接受的参数是一个函数名 2.返回值是函数名,两个条件满足一个就是高阶函数
# 把函数当中参数传给另外一个函数 def foo(n): print(n) def bar(name): print(‘my name is %s‘ % name) foo(bar) foo(bar(‘zhangsan‘)) # 返回值中包含函数 def test3(): print(‘from test3‘) def handle(): print(‘from handle‘) return test3() handle()
4.尾调用
在函数的最后一步调用另外一个函数(最后一行不一定是最后一步),调用函数的栈状态不需要保存,可以用来优化递归函数,俗称:尾递归
原文:https://www.cnblogs.com/xiangtingshen/p/10389498.html