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 #--------------------------------------------------------------------
时间: 2024-10-20 04:14:32

Python 学习笔记 -- 内嵌函数、闭包、匿名函数、高阶函数map、高阶函数filter、高阶函数reduce的相关文章

python学习笔记--内置数据结构2

1.字符串--是不可变的 定义及初始化 In [577]: s = 'hello wolrd' In [578]: s Out[578]: 'hello wolrd' In [579]: s = "hello python" In [580]: s Out[580]: 'hello python' In [581]: s = '''hello''' In [582]: s Out[582]: 'hello' In [583]: s = """hello&q

python学习笔记--内置数据结构

1.列表--是一个序列,用于顺序的存储数据 列表的定义与初始化 In [374]: lst = list() In [375]: lst Out[375]: [] In [376]: lst = [] In [377]: lst = [1,2,3] In [378]: lst Out[378]: [1, 2, 3] In [379]: lst = list(range(1,10)) In [380]: lst Out[380]: [1, 2, 3, 4, 5, 6, 7, 8, 9] 访问列表元

Python学习笔记010——匿名函数lambda

1 语法 my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1 arg1.arg2:参数 arg1 + arg2 + 1 :表达式 2 描述 匿名函数不需要return来返回值,表达式本身结果就是返回值. lambda 仅简洁了代码,并不会提高程序运行效率 如果可以用 for...in...if 来完成的,最好不使用匿名函数lambda 使用lambda时,函数内不要包含循环.嵌套:如果存在,则最好使用def函数来完成,这样的代码可读性和复用性均较高 l

python学习笔记11-python内置函数

python学习笔记11-python内置函数 一.查看python的函数介绍: https://docs.python.org/2/library/ 二.python内置函数 1.abs获取绝对值: 通过python官网查看abs abs(x) Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument

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

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

python学习笔记(03):函数

默认参数值:   只有在行参表末尾的哪些参数可以有默认参数值,即 def func(a, b=5 )#有效的 def func( a=5,b )#无效的 关键参数: #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) #输出: $ pyth

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

python学习笔记7:装饰器

一.什么是装饰器 装饰器,它本身是一个函数. 装饰器的作用在于,在不改变现有函数的调用方式的前提下,给其新增一些功能:这些功能一般都是公用的. 它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等场景.(此句引用:https://zhuanlan.zhihu.com/p/25648515) 二.学装饰器的前提知识 1.函数即变量 2.高阶函数 3.函数嵌套 以上三个知识点,在我的上一篇博客'python学习笔记6:函数'里 有详细介绍,这里不赘述 三.一个例子 1.场

python &nbsp; 学习笔记 (核心)

python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[0],x[-1]指最后一个字符,x[2:4]取子串, '''hello''' #hello三引号会保留文本输入时的换行符制表符等不需要转义,用于多行原样输入保存 'hello'+'world' #字符串拼接,'hello'*2 #字符串重复 help(fun) #帮助,help(module.met