函数(2):函数的内嵌函数,闭包,lambda表达式以及函数的递归

一.global
一般来说,在函数内不能修改全局变量,但如果应用global,则可以试图修改全局变量

count=10
def ad():
	global count
	count=20
	print(count)
ad()
20
count#这里用了global在函数内部修改了count的值,所以count是20而不是10
20

二.内嵌函数
即在函数内部再定义一个函数

def fun1():
	print(1)
	def fun2():
		print(2)
	fun2()
fun1()
1
2

注意,内嵌函数只能在函数中调用,如果在函数外调用函数中的函数则会报错。
三.闭包
即函数内部的函数的变量运用了外部函数的变量

def fun1(x):
	def fun2(y):
		return x*y#内部函数调用了外部函数的变量
	return fun2

四.lambda表达式
lambda表达式相当于匿名函数,省去了对函数的命名和定义
形式为
lambda 参数:要返回的式子
参数可以是0个,1个或者多个

i=lambda x,y:x+y
i(1,2)
3
i=lambda x:2*x
i(2)
4

五.递归
即在函数中调用函数本身的过程
(1).利用递归求斐波那契数列

def fab(n):
	if n==1 or n==2:
		return 1
	else:
		return fab(n-1) + fab(n-2)

(2).利用递归求汉诺塔

def hanoi(n,x,y,z):
	if n==1:
		print(x,'-->',z)
	else:
		hanoi(n-1,x,z,y)#将前n-1个盘子从x移动到y
		print(x,'-->',z)#将最底下的盘子从x移动到z上
		hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值