Python3-高阶函数、闭包
2024-10-09 22:06:02
一、高阶函数
满足下列条件之一为高阶函数
1.某一函数当作参数传入另一个函数中
2.函数的返回值包含n个函数,n>0
高阶函数示范:
def bar():
print 'in the bar'
def foo(func):
res=func()
return res
foo(bar)
高阶函数的牛逼之处:
def foo(func):
return func print 'Function body is %s' %(foo(bar))
print 'Function name is %s' %(foo(bar).func_name)
foo(bar)()
#foo(bar)() 等同于bar=foo(bar)然后bar()
bar=foo(bar)
bar()
二.闭包
闭包
1.闭 函数里面还嵌套了函数
2.包 包含了对外部函数作用域中变量的引用
内部函数包含对外部作用域而非全局作用域名字的引用,该内部函数成为闭包函数。
闭包的作用:
就是能够引用外部函数的变量,并且可以保证外部函数的变量控制在一个局部作用域中。
#闭包的常用形式
def hei():
x =
def inner():
print(x) #局部的
return inner # i = hei()
# i() #全局
判断闭包函数的方法__closure__
#输出的__closure__有cell元素 :是闭包函数
def func():
name = 'eva'
def inner():
print(name)
print(inner.__closure__)
return inner f = func()
f() #输出的__closure__为None :不是闭包函数
name = 'egon'
def func2():
def inner():
print(name)
print(inner.__closure__)
return inner f2 = func2()
f2()
最新文章
- python使用uuid库生成唯一id
- Android 开发基础及环境配置
- Spring MVC错误页面配置
- 深入理解JS异步编程五(脚本异步加载)
- JAVA 设计模式 模板方法模式
- 51nod百度之星2016练习赛
- ACM2027
- Security 可视化
- 【HDOJ】2612 Find a way
- Linux学习笔记7——linux中的静态库和动态库
- [置顶] Android系统移植与调试之------->;如何修改Android设备添加3G上网功能
- asp.net js调用后台方法
- ubuntu13.10 下一个 g++和gcc 4.8不兼容的问题不能被安装
- 弹性布局EM的计算方法
- javascript深入理解js闭包(转载)
- vs/windows程序找不到入口点cuvidGetDecodeStatus于AppDecGL.exe动态链接库上
- Android开发 MVP模式的规范记录(个人总结)
- linux下ping命令出现ping: sendto: Network is unreachable
- Android手机插上usb能充电但不能识别的一种解决方法
- [USACO18DEC]The Cow Gathering