Python3 基础:返回函数和匿名函数
来源:互联网 发布:大众网络报电子版 编辑:程序博客网 时间:2024/06/01 12:28
返回函数
返回函数顾名思义:就是返回值是函数.
内部函数可以引用外部函数的参数和局部变量.
def lazy_sum(*args):def sum(): all = 0 for x in args: all = all + x return allreturn sum print(lazy_sum(1,3,5,7))print(lazy_sum(1,3,5,7)())# 输出结果<function lazy_sum.<locals>.sum at 0x7f2f4d1b26a8>16
上面的函数:第一个输出结果是一个函数引用.第二个输出才是最终我们想要的结果.这就说明:返回函数返回的是指向sum函数的变量,当调用sum()的时候内部函数才真正的执行了.
还有一点需要注意的是:每次调用lazy_sum函数都会返回一个新的函数,即使传入的参数相同.
闭包
大家看这段代码:
def count():fs = []for i in range(1, 4): print(i) def f(): return i*i fs.append(f)return fsf1, f2, f3 = count()
你运行一下你会发现,输出的结果是1,2,3 内部函数在调用的时候才运行.那么当你调用f1(),f2(),f3()时输出的结果全部都是9.你肯定知道为啥了.因为调用了count(),i已经为3了,而内部的f()此时还没有执行,当它执行时i = 3,所以输出的都是9.
那么,应该怎么修改呢?看代码:
def count():fs = []def f(j): def g(): return j*j return gfor i in range(1, 4): print(i) fs.append(f(i))return fsf1, f2, f3 = count()
返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
举个例子:
>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6]))[1, 4, 9, 16, 25, 36]
关键字lambda
表示匿名函数,冒号前面的x表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
0 0
- Python3 基础:返回函数和匿名函数
- pyhotn3入门基础-14 返回函数和匿名函数
- python3学习笔记:函数作为返回值&匿名函数lambda
- js 匿名函数 和 返回函数
- python入门基础函数和匿名函数
- 返回函数、匿名函数lambda、偏函数
- python基础-匿名函数
- Python3 基础:filter和sorted函数
- Python3 基础:装饰器和偏函数
- Python3 基础:定义函数
- python3基础-函数
- Python基础11--匿名函数和偏函数
- Python3学习(16)--匿名函数lambda
- 匿名函数和内置函数
- 具名函数和匿名函数
- 内置函数和匿名函数
- Scala函数和匿名函数
- 8、函数的参数问题、参数传值、return返回值、可变函数和匿名函数
- 静态块、动态块、构造函数、继承函数等的执行顺序
- php设置http请求头信息和响应头信息
- 提交项目到git远程仓库报错:error occurred during unpacking on the remote end: error Missing blob 261c12f4b8e2f5a
- 利用out关键字向函数传递List<T>参数遇到的问题
- LeetCode 4---Median of Two Sorted Arrays
- Python3 基础:返回函数和匿名函数
- Java基本数据类型
- curl如何发起DELETE/PUT请求
- 欢迎使用CSDN-markdown编辑器
- JS and Jquery 操作Form表单
- Linux下解决脚本错误
- cattle学航模之发动机篇
- C语言的Socket编程例子(TCP和UDP)
- Unity 加载网络图片