一、高阶函数

 

满足下列条件之一为高阶函数

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()

最新文章

  1. python使用uuid库生成唯一id
  2. Android 开发基础及环境配置
  3. Spring MVC错误页面配置
  4. 深入理解JS异步编程五(脚本异步加载)
  5. JAVA 设计模式 模板方法模式
  6. 51nod百度之星2016练习赛
  7. ACM2027
  8. Security 可视化
  9. 【HDOJ】2612 Find a way
  10. Linux学习笔记7——linux中的静态库和动态库
  11. [置顶] Android系统移植与调试之------->如何修改Android设备添加3G上网功能
  12. asp.net js调用后台方法
  13. ubuntu13.10 下一个 g++和gcc 4.8不兼容的问题不能被安装
  14. 弹性布局EM的计算方法
  15. javascript深入理解js闭包(转载)
  16. vs/windows程序找不到入口点cuvidGetDecodeStatus于AppDecGL.exe动态链接库上
  17. Android开发 MVP模式的规范记录(个人总结)
  18. linux下ping命令出现ping: sendto: Network is unreachable
  19. Android手机插上usb能充电但不能识别的一种解决方法
  20. [USACO18DEC]The Cow Gathering

热门文章

  1. 2017-12-18python全栈9期第三天第二节之str常用操作方法及for循环之判断字母数字组成
  2. u-boot(六)小结
  3. urllib 学习二
  4. Java从resources文件夹读取配置文件
  5. 【转】C语言中的符号优先级
  6. Golang入门教程(十五)指针
  7. vue实现商品累计效果
  8. Linux系统中用户组、文件权限浅解
  9. IEEE LaTeX模板使用BibTeX
  10. springboot10-springcloud-eureka 服务注册与发现,负载均衡客户端(ribbon,feign)调用