Python函数嵌套/递归(七)-----详细

136 篇文章 25 订阅
14 篇文章 0 订阅

一、函数嵌套

函数的嵌套分为两种情况:
函数的嵌套调用:即在一个函数中调用其它函数的情况
函数的嵌套定义:即在函数中进行另外一个函数的定义,也称为嵌套函数

函数的嵌套调用

例如:

def max(x,y):
	return x if x > y else y;

def maxs(a,b,c,d):
	res1 = max(a,b);
	res2 = max(res1,c);
	res3 = max(res2,d);
	return res3;
	
print(maxs(5,2,420,299));
函数的嵌套定义

例如:

def f1():
	def f2():
		def f3():
			pass
	print("---->f1")
	f2()
f2() #会报错 嵌套函数在外部不能使用

二、函数递归

上一个知识点中,我们讲解了函数的嵌套,在函数嵌套调用其它函数时,有一种特殊情况,就是直接或间接地调用了函数本身,这样的一种情况称为函数的递归调用

例1:

def func(): #直接调用自己
	print(‘newdream')
	func()
func()

例2:

def foo(): #间接调用自己
	print('from foo')
	bar()
def bar():
	print('from bar')
	foo()
foo()

Python在递归中没有像别的语言对递归进行优化,所以他的每一次调用都会基于上一次的调用进行,并且它设置了最大的递归数量防止递归外溢

递推

如例3,递归每一次都是基于上一次进行下一次的执行,这叫递推

回溯

是在遇到终止条件,从最后往回返一级一级的把值返回来,这叫回溯

例3:

def num(n):
	if n == 1:
		return 1
	return num (n-1)+2
print(num(7))

三、匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用 def 声明函数的标准步骤

Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时不能包含命令或多个表达式

匿名函数不能直接调用print,因为lambda需要一个表达式

lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率

lambda函数的语法只包含一个语句
例如:
lambda [arg1 [,arg2,…argn]]:expression
举例:

sum = lambda arg1, arg2: arg1 + arg2;
print ( "Value: ", sum( 5, 8 ) )

四、内置函数

Python内置函数就是python标准库里(语言自身携带的)函数(公共函数),一般各种编程语言中都会预先定义常用的内置函数。因为内置函数使用频率比较频繁,所以通过内置函数的形式提供出来

Python中内置函数大致包含如下类型:
数学运算、类型转换、序列操作、对象操作、反射操作、变量操作、交互操作、文件操作、编译执行、装饰器

例如:
类型转换: int() float() str()
序列操作: sorted() reversed() next()
交互操作:print() input()
等等…


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值