目录

  • 前言
  • 递归函数
  • lambda的运用
  • 内置高阶函数
  • 总结


前言

本节要说的内容比较套娃,请自带大脑循环。

递归函数

简单说一下就是:自己用自己!
其实就是函数嵌套的一个特殊的例子,自己是个函数,并调用自身,只不过函数必须携带出口,也就是要有return才行。

# 求 1+2+3的值
def sum_numbers(num):
    if num == 1: 
        return 1
    elif num < 0: # 这里的作用是为了防止 num为负数或0 造成递归深度过深
        return 0
    return num + sum_numbers(num-1)
result = sum_numbers(3)
print(result)

流程图

级数法求圆周率Python 求级数的值python_python


什么是递归过深,就是一直处于无限套娃,程序死循环!

lambda的运用

它是指 函数如果只存一个判断条件下,并且有一个return返回,那就用lambda简化写法,具体示例代码如下:

# 原代码
def  add(a,b):
     return a + b
result = add(1,2)
print(result)

# lambda代码
fn1 = lambda a,b: a+b
print(fn1(1,2))

lambda格式:函数名 = lambda 参数,参数,… : 返回值表达式

当然除了固定值的返回,也可以存在if判断控制的返回值

# lambda 的if语句
fn5 = lambda a,b: a if a>b else b  # lambda 参数 : 三目运算
print(fn5(1000,2000))

格式:函数名 = lambda 参数,参数,… : 三目运算的返回值

内置高阶函数

高阶函数其实也没难度,就把一个函数当成 参数传递给 另一个函数!

具体示例代码
首先,我们来了解两个函数,abs() 这是用来取绝对值; round() 这是是用来四舍五入。
知道这两个函数的作用,我们现在来进行 函数参数传递的操作。

# 1.abs() 绝对值函数
a = abs(-10) # 10
print(a)
# 2. round() 四舍五入函数
b = round(532.11) # 532
print(b)


# 按照原本的方式,如果我们要用函数求到值
# 方法一
def add_num(a,b):
    return abs(a) + round(b) # 事先得进行函数嵌套,然后再返回一个值做运算
result = add_num(-10,62.9)
print(result)

# 方法二 :高阶函数, f作为形参用来传入函数式
def add_num1(a,b,f):
    return f(a) + f(b)
result1 = add_num1(-3,-2,abs)  # 就是将abs() 作为一个参数 直接传到 函数内部做参数函数,f = abs()
print(result1)

然后这里介绍一下三个常用的内置高阶参数:

1. map()
# 三个常用的内置高阶函数
# map(func函数式,lst列表)将传入的函数变量作用到lst变量中元素中
# 并将结果组成新的列表返回给迭代器
list1 = [1,2,3,4,5,6,7,8]
def fiss(x):
    return x ** 2
fiss = lambda x : x**2
result = map(fiss,list1)
print(list(result))

2.reduce()
# reduce(func函数式,lst列表),注意:其中有func必须有两个参数。
# 每次func计算的结果继续和序列的下个元素做累积计算
import functools
list2 = [1,2,3,4,5]
def func(a,b):
    return a + b
result = functools.reduce(func,list2)
print(result)

3.filter()
# filter(func函数式,lst列表)过滤函数,用于过滤不符合条件的元素
# 然后返回一个filter对象,要转化为列表就需要使用list()函数
list3 = [1,2,3,4,5,6,7,8,9,10]
def func2(x):
    return x % 2 == 0
result = filter(func2,list3)
print(list(result))

总结

级数法求圆周率Python 求级数的值python_列表_02

以上就是高阶函数和递归的基本内容,如果有做科学计算可自己深入了解!这里就不多做介绍了。