Python 学习笔记 -- 内嵌函数闭包匿名函数高阶函数map高阶函数filter高阶函数reduce

Posted 欧晨曦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 学习笔记 -- 内嵌函数闭包匿名函数高阶函数map高阶函数filter高阶函数reduce相关的知识,希望对你有一定的参考价值。

  1 #------------------------------内嵌函数------------------------------
  2 #内嵌函数就是在函数内部定义函数
  3 #实例一
  4 print("#------------------------------内嵌函数------------------------------")
  5 def funOutOne():
  6     x = 5
  7     def funIn():
  8         x = 3
  9         print("My funOutOne in FunIn x = ", x)
 10     print("My funOutOne x = ",x)
 11     return funIn
 12 
 13 #调用方法
 14 funOutOne()()
 15 
 16 #实例二
 17 def funOutTwo():
 18     x = 5
 19     def funIn():
 20         x = 6
 21         print("My funOutTwo in FunIn x = ",x)
 22     print("My funOutTwo x = ",x)
 23     return funIn()
 24 
 25 #调用方法
 26 funOutTwo()
 27 
 28 #实例二:如何引用函数内部的变量,使用nonlocal
 29 def funOutThree():
 30     x = 10
 31     y = 20
 32     def funIn():
 33         nonlocal x
 34         x = 18
 35         y = 38
 36         print("My funOutThree in funIn x = ",x,"y = ",y)
 37     funIn()
 38     print("My funOutThree x = ",x,"y = ",y)
 39     return None
 40 
 41 funOutThree()
 42 
 43 #实例四:观察它们的调用
 44 def funOutFour():
 45     def funIn():
 46         print("funIn 后被调用!")
 47     print("funOutFour 先被调用!")
 48     return funIn
 49 
 50 funOutFour()()
 51 print("#--------------------------------------------------------------------")
 52 #--------------------------------------------------------------------
 53 #------------------------内嵌函数的闭包特性--------------------------
 54 print("#------------------------内嵌函数的闭包特性--------------------------")
 55 #当把内嵌函数赋值给一个变量是,若变量没有被销毁,则函数内部的参数没有被回收
 56 def closureFun():
 57     x = 1
 58     def funIn():
 59         nonlocal x
 60         x += 1
 61         return x
 62     return funIn
 63 
 64 a = closureFun()
 65 b = closureFun()
 66 c = closureFun()
 67 
 68 print("a,",a())
 69 print("a,",a())
 70 print("a,",a())
 71 print("b,",b())
 72 print("b,",b())
 73 print("c,",c())
 74 #结论,不同变量之间,指向的对象各不相干!
 75     
 76 print("#--------------------------------------------------------------------")
 77 #--------------------------------------------------------------------
 78 #------------------------匿名函数、高阶函数--------------------------
 79 print("#------------------------匿名函数、高阶函数--------------------------")
 80 #匿名函数 以及高阶函数 map(映射) filter(过滤) reduce(归纳)
 81 
 82 #匿名函数:匿名函数可增加代码的可阅读性、精简代码
 83 #实例一:
 84 a = lambda x, y: x + y
 85 print("匿名函数:",a(5,8))
 86 
 87 #实例二:
 88 b = lambda: [x * x for x in range(10)]
 89 list1 = b()
 90 print("匿名函数:",list1)
 91 
 92 #高阶函数map(映射):其实就是把序列中的每一个值作为参数传递给函数后返回另外一个序列
 93 #实例一:
 94 a = map(lambda x: x * 2,[x for x in range(10)])
 95 print("高阶函数map:",list(a))
 96 
 97 #实例二:
 98 b = map(lambda x : x ** 3,[x for x in range(10,21)])
 99 print("高阶函数map:",list(b))
100 
101 #高阶函数filter(过滤):如果序列中的某一个值转化为bool值,值为False,将会被剔除出该序列
102 #实例一:
103 a = filter(lambda x : x % 2, (1,2,3,4,5,6,7,8))
104 print("高阶函数filter",list(a))
105 #实例二:
106 b = filter(lambda x : x % 2 == 0, (1,2,3,4,5,6,7,8))
107 print("高阶函数filter",list(b))
108 
109 #高阶函数reduce:讲一个序列的值作为参数传递给函数,最终返回为一个值!在调用reduce函数前,要记住导入包
110 from functools import reduce
111 #实例一:
112 a = reduce(lambda x, y: x + y,(x for x in range(6)))
113 print("高阶函数reduce",a)
114 
115 #实例二:
116 b = reduce(lambda x, y: x * y,(1,2,3,4,5))
117 print("高阶函数reduce",b)
118 
119 print("#--------------------------------------------------------------------")
120 #--------------------------------------------------------------------

 

以上是关于Python 学习笔记 -- 内嵌函数闭包匿名函数高阶函数map高阶函数filter高阶函数reduce的主要内容,如果未能解决你的问题,请参考以下文章

Python3.x基础学习-闭包函数

Python学习---匿名函数和闭包的学习

Swift学习笔记之闭包

python学习笔记之函数总结--高阶函数以及装饰器

Python学习————闭包函数

《从零开始学Swift》学习笔记(Day 22)——闭包那些事儿!