Python(day4)

nonlocal关键字

强制声明其变量不是一个局部变量

>>>def fun1():
	x = 5
	def fun2():
		x*=x
		return x
	return fun2()	
>>>fun1()
#会报错,因为在fun2()中,自动屏蔽外部变量,x没有定义

通过nonlocal关键字:

>>>def fun1():
	x = 5
	def fun2():
		nonlocal x
		x*=x
		return x
	return fun2()
>>>fun1()
>>>25			

-

递归

-阶乘

>>>def factorial(n):
	if n == 1:
		return 1
	else:
		return n*factorial(n-1)
	number = int(input('请输入:')
	result = factorial(number)
	print('%d 的阶乘是:%d' % number,result)		

具体过程:

若n值为5,那么:
	factorial(5) = 5 * factorial(4)
	factorial(4) = 4 * factorial(3)
	factorial(3) = 3 * factorial(2)
	factorial(2) = 2 * factorial(1)
	factorial(1) ,返回1
因此,factorial(5) = 5*4*3*2*1

-

斐波那契数列

1,1,2,3,5,8,13,21,34,55,89,144...

迭代

>>>def fab(n):
	n1 = 1
	n2 = 1
	n3 = 1
	if n < 1:
		print('输入有误')
		return -1
	while (n-2) > 0:
		n3 = n2 + n1
		n1 = n2
		n2 = n3
		n - = 1
		return n3
			

递归
当n=1,n=2时,Fn=1
当n>2,F(n-1)+F(n-2)

>>>def fab(n):
	if n<1:
		print('输入有误')
		return -1
	if n == 1 or n == 2:
		return 1
	else:
	return fab(n-1) + fab(n-2)
>>>result = fab(20)
   if result != -a:
   	print('总数为%d只' % result)			

相比之下,迭代运行速度更快

-

lambda表达式

匿名函数
作用:

  1. 省下定义函数过程
  2. 不用考虑命名问题
  3. 简化代码可读性
>>>def ds(x)
	return 2*x+1
>>>ds(5)
>>>11
>>>lambda x:2*x+1		#冒号前面为原函数参数,后面为原函数返回值
>>>g = lambda x:2*x+1
>>>g(5)
>>>11	

-

BIF

filter(),相当于过滤器

>>>filter(None,[1,0,False,True])
>>>list(filter(None,[1,0,False,True])		等同于	>>>list(filter(lambda x:x%2,range(10)))
>>>[1,True]						>>>[1,3,5,7,9]
>>>def add(x):
	return x%2
>>>temp = range(10)
>>>show = filter(add,temp)
>>>list(show)
>>>[1,3,5,7,9]	

-

map()

映射 map(function or None,iterable)

>>>list(map(lambda x:x*2,range(10)))
>>>[0,2,4,6,8,10,12,14,16,18]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值