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

向量数据库大模型机器学习

回顾上一章节的内容: Python中函数的介绍

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

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

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


  
  `def sayhi():`
  `print("hello world")`
 
  `test = sayhi`
  `print(test)`
  `print(sayhi)`
  `test()`
  `sayhi()`
 
 
  `del test`
  `sayhi()`
  `test()`
 

picture.image

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


  
  `def func(*args, **kwargs):`
  `def add(a, b):`
  `return a + b`
  `return add`
 
  `new_func = func()`
  `print(new_func(1, 2))`
 
 

picture.image

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

三、匿名函数

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


  
  `lambda arguments: expression`
 

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

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

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

  
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、使用匿名函数进行简单的数学计算:

  
add = lambda x, y: x + y  
result = add(3, 5)  
print(result) # 输出:8  

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

  
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。

 `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 等。

  
def fibonacci(n):  
 if n <= 1:  
 return n  
 else:  
 return fibonacci(n-1) + fibonacci(n-2)  

End

想进学习交流群、同行一起探讨交流、需要学习资料的可以加我好友(xiaobotester),如果觉得文章对你有帮助的话,欢迎点赞转发~

👇👇👇

关注公众号,测试干货及时送达picture.image

往期 精彩回顾

picture.image

一篇文章为你揭秘pytest的基本用法

Anaconda-一个开源的Python发行版本

Python脚本读取Consul配置信息

Python中使用pickle库进行数据的序列化存储

Python小知识-函数传参怎么设置期望的传参类型?

python解析xml遇到的问题分享(命名空间有关)

分享一下最近使用python字典取值用法的收获

Python里面怎么判断某个字符串是否包含列表中的某一个元素

Python中列表的extend()方法介绍

Python中鸭子类型与多态介绍

Python中的抽象基类介绍

Python中的type与isinstance的区别

Python中类的属性、多继承、自省机制中的__mro__、__dict__ 和dir介绍

Python中__new__和__init__的区别与联系

picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
CloudWeGo白皮书:字节跳动云原生微服务架构原理与开源实践
本书总结了字节跳动自2018年以来的微服务架构演进之路
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论