前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python函数的进阶(匿名函数、递归)

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

作者头像
小博测试成长之路
发布2023-09-01 08:28:14
1430
发布2023-09-01 08:28:14
举报
文章被收录于专栏:软件测试学习

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

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

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

代码语言: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)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小博测试成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档