• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

桃花源主

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

函数对象和闭包

1.函数对象(精髓是可以把函数当成变量去用)

函数对象指的是函数可以被当作'数据'来处理,具体可以分为四个方面的使用

1.1 函数可以被引用

def add(x,y):
	return x+y
func = add
func(1,2)
3

1.2可以当做函数的参数传给别的函数

def foo(x):
	print(x)
foo(func)  #foo(func的内存地址)

1.3可以把函数当成一个函数的返回值

def bar():
	return add
func = bar()
func(1,2)
3

1.4函数可以作为容器类型的元素

l=[func,2,3]
l[0]()  #调用函数

2.闭包函数

闭包函数=名称空间与作用域+函数嵌套+函数对象

"包“:函数包含对外层函数作用域名字的引用(不是对全局作用域) 只要是外层的函数,第几层无所谓,但不能是全局作用域

  • 闭包:若内嵌函数包含外部函数作用域(而非全局作用域)中变量的引用,那么该'内嵌函数'就是闭包函数,简称闭包。
  • '闭'代表函数是内部的,'包'代表函数外'包裹'着对外层作用域的引用 ,因而无论在何处调用闭包函数,使用的仍然是包裹在其外层的变量。

posted on 2021-01-30 23:06  桃花源主  阅读(62)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3