Python函数的进阶(匿名函数、递归)

2023-09-01 08:28:14 浏览数 (1)

废话不多说,接下来简单记录一下关于函数这块,之前没怎么关注过的一些知识点,让我们一起来往下学习。

一、函数是一个对象,函数可以被修改名字、可以传递、可以被删除。

直接通过下面的代码看效果进行理解:

代码语言:javascript复制
def sayhi():
  print("hello world")

test = sayhi
print(test)
print(sayhi)
test()
sayhi()


del test
sayhi()
test()

二、函数的返回值可以是函数

代码语言:javascript复制
def func(*args, **kwargs):
    def add(a, b):
        return a   b
    return add

new_func = func()
print(new_func(1, 2))

具体的就不多解释了,通过上面的案例去进行理解。说实话,以前我还真没这么写过,又接触到了一种新的用法。

三、匿名函数

在Python中,匿名函数可以通过lambda关键字定义,其语法格式为:

代码语言:javascript复制
lambda arguments: expression

匿名函数可以有多个参数,通过冒号后面的表达式来定义函数体。与普通函数不同的是,匿名函数没有函数名,并且只能包含单个表达式。

以下是几个使用匿名函数的实例,以展示其简洁、灵活和实用之处。

1、使用匿名函数对列表进行排序:

代码语言:javascript复制
my_list = [5, 2, 8, 1, 9]
sorted_list = sorted(my_list, key=lambda x: x)
print(sorted_list)  # 输出:[1, 2, 5, 8, 9]

2、使用匿名函数进行简单的数学计算:

代码语言:javascript复制
add = lambda x, y: x   y
result = add(3, 5)
print(result)  # 输出:8

3、使用匿名函数进行元素筛选:

代码语言:javascript复制
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_list = list(filter(lambda x: x % 2 == 0, my_list))
print(filtered_list)  # 输出: [2, 4, 6, 8, 10]

四、函数递归调用

递归是一种算法或函数自我调用的过程,它在解决问题时能够简洁、优雅地表达思想。通过递归调用,函数可以重复执行相同的操作,但在每次调用中处理的数据规模会逐渐减小,直到达到某个基本条件而停止。

案例演示:

1、计算阶乘

阶乘是指将一个非负整数 n 乘以所有小于等于它的正整数的乘积。

例如,5的阶乘(表示为5!)等于5 * 4 * 3 * 2 * 1,结果为120。

代码语言:javascript复制
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

2、计算斐波那契数列

斐波那契数列是一个由 0 和 1 开始,后续每一项都是前两项之和的数列。例如,斐波那契数列的前几项为 0、1、1、2、3、5、8、13 等。

代码语言:javascript复制
def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1)   fibonacci(n-2)

0 人点赞