python基础系列:
python自学篇一[ Anaconda3安装 ]
python自学篇二[ pycharm安装及使用 ]
python自学篇三[ 判断语句if的使用 ]
python自学篇四[ 基本数据类型和字符串常用处理 ]
python自学篇五[ 列表 ]
python自学篇六[ 元组 ]
python自学篇七[ 字典+深拷贝与浅拷贝 ]描述
python自学篇八[ 循环:while+for+pass+range()+推导式 ]
python自学篇九[ 函数(一):参数+对象 ]
python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器 ]
python自学篇九[ 函数(三):变量作用域+ATM+5个小练习 ]
python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数 ]
python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]
python自学篇十[ 面向对象 (二) :继承+多继承+类属性+实例属性]
python自学篇十[ 面向对象 (三) :访问限制+类方法+静态方法]
python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]
python自学篇十二[ 文件:打开+读取+写入+3个习题]
递归函数
- 递归函数:递归就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。(一句话,自己调用自己)
- 举例,计算阶乘 n! = 1 * 2 * 3 * … * n,用函数 fact(n)表示,可以看出:
1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
…
n! = n × (n-1)! - 同样的,可以把递归看作一场梦,做梦的时候梦到自己在做梦,梦中的自己正在做梦···,或者是镜子里面看见有个镜子,里面有自己,一层一层的。
- 求阶乘
def factorial(n):
if n == 1:
return 1
else:
return n*factorial(n-1)
print(factorial(10))
结果:
3628800
匿名函数
- 定义函数的过程中,没有给定名称的函数就叫做匿名函数;Python中使用lambda表达式来创建匿名函数
lambda 来创建匿名函数规则:
-
lambda只是一个表达式,函数体比def简单很多
-
lambda的主体是一个表达式,而不是一个代码块,所以不能写太多的逻辑进去
-
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数
-
lambda定义的函数的返回值就是表达式的返回值,不需要return语句块
-
lambda表达式的主要应用场景就是赋值给变量、作为参数传入其它函数
-
lambda匿名函数的表达式规则是:
lambda [参数列表]: 表达式
例如:
a=lambda :'我爱你'
print(a())
结果:
我爱你
- 带参数的lambda
s = lambda x: x*2
print(s(3))
结果:
6
- 多参数lambda
s = lambda x,y: x+y
print(s(3,4)