Python3 函数式编程
一 函数式编程
函数式编程是种编程方式,它将电脑运算视为函数的计算;通俗来说就是先用数学逻辑定义一个表达式,然后使用函数来实现这个功能。
实例(Python3.0+):
y = 2*x+1 --> 先定义一个数学表达式 def cal(x): ''' 说明:使用函数实现上述表达式的功能 ''' return 2*x+1 # 上述过程就是函数式编程
如何判断一个函数是否属于函数式编程?
- 不用变量保存状态(不给变量赋值),不修改变量
实例(Python3.0+):
# 非函数式编程
n = 1
def cal():
global n
n+=1
return n
cal()
# 函数式编程
n =1
def cal(n):
return n+1
cal(10)
函数即变量
在Python编程中,有一种说法:函数即变量,如何体现呢?
实例(Python3.0+):
def foo(n):
print(n)
def bar(name):
print('my name is sunwk')
foo(bar) # 把函数bar(也就是bar函数的内存地址)当成变量(参数)传给了foo函数
运行结果:
>>> <function bar at 0x0000000000FA58C8>
二 高阶函数
随着知道的知识多了,接触面广了,也越来越糊涂了,刚开始接触高阶函数,那什么是高级函数啊,先搞几个例子看看吧
实例(Python3.0+):
def foo():
print('from foo')
def bar():
print('from bar')
return foo
a = bar()
print(a())
# 运行结果:
>>>from bar
>>>from foo
>>>None
"""
为什么最后会输出一个None呢,因为print(a()),首先执行a()相对于执行foo(),但是print后,相当于输出foo()的return返回值,foo函数中未定义,所以返回None
"""
高阶函数特性总结:
- 函数接收的参数是一个函数名
- 返回值中包含函数
尾递归|尾调用
- 函数的最后一行调用函数
实例(Python3.0+):
# 非尾递归:
def foo(n):
print('from foo')
return foo() + 1
'''
上述函数可以写成如下形式:
def foo(n):
print('from foo')
f = foo() +1
return f
函数的最后一行调用的不是函数,所以不是尾调用
'''
# 尾递归
def foo(n):
print('from foo')
return foo()

浙公网安备 33010602011771号