python小白之路:第三章函数第二节

高阶函数

  • 递归函数 :

定义了一个函数。然后在函数内。自己调用了自己这个函数。
递归函数内必须要有结束,不然会一直调用下去
一层一层的进入,再一层一层的返回

	 def digui(num) :
	         print(num)
	         if num>0:
	            digui(num-1)
	         print(num)
     结果:
     3
     2
     1
     0
     0
     1
     2
     3
  • 斐波那锲数列和阶乘 :
	 def feibo(n):
	    if n == 1 or n == 2 :
	        return 1
	    else :
	        print(n-1,n-2)
	        return  feibo(n-1) + feibo(n-2)
	
	  print(feibo(6))
  结果 :
    5 4
    4 3
    3 2
    2 1
    2 1
    3 2
    2 1
    8
  阶乘类似
  • 回调函数 :

如果在一个函数中要求传递的参数是一个函数作为参数,并且在函数中使用了传递进来的函数,那么这个函数成为一个回调函数
map()、sorted()、filter()、reduce()都会用到回调函数

	def func(x,y,f):
	      print(f(x,y))   
	  func(2,3,pow) #求2**3 
  • 闭包函数 :

在一个函数中,返回一个内函数,并且这个反悔的内函数还是用了外部函数中的局部变量,这就是闭包函数
保护了函数中的局部变量不受外部的影响
利用 函数名.__closure__来检测是否是闭包函数

  • 匿名函数 lambda表达式 :

匿名函数可以不使用def定义,并且也没有名字

在python中用lambda表达式来定义匿名函数

lambda仅是一行代码,不是一个代价块

lambda也有形参,并且不能访问除自己的形参以外的任何数据

lambda语法 :
lambda[参数列表] :返回值
res = lambda x,y: x + y
print(res(4,4))

	 res = lambda num: 'yes' if num == 1 else 'no'
	      print(res(2))
      结果 :
        8
        8
        no
  • 迭代器 iterator:

    访问集合元素的一种方式

    可以记住访问遍历的位置的对象,从集合的第一个元素开始访问,直到集合中的所有元素被访问完毕

    只能从前往后一个一个的遍历,不能后退

    能被next()函数调用,并不断返回下一个值

  • iter():

    把可迭代的对象,转为一个迭代器对象

    参数:可迭代对象(str、list、tuple、dict、set、range。。。)

    返回值 : 迭代器对象

  • next()和list() :

    前者一个一个取,后者直接取出所有的数据

	  >     f4 = [1,2,3,4]
	        res =iter(f4)
	        r = next(res)
	        print(r)
	        r = next(res)
	        print(r)
	        r = next(res)
	        print(r)
	        r = next(res)
	        print(r)
	        r = list(res)
	        print(r)
	        f5 = [1,2]
	        res = iter(f5)
	        r = list(res)
	        print(r)
        结果:
        1
        2
        3
        4
        []
        [1, 2]

递归和迭代:

借用一张图来理解,图片来源网络。

来源网络

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值