java函数嵌套与闭包_函数嵌套与闭包函数

函数嵌套:

函数嵌套就是在函数内调用了其他函数

名称空间与作用域

名称空间:就是存放名字与值绑定关系的地方

名称空间分类:

1,内置名称空间:存放python解释器自带的名字,在解释器启动时生效,关闭就失效

2,全局名称空间:存放文件级别的名字(没有缩进),在执行文件的时候生效,在文件结束或者在文件执行期间被删除时失效

3,局部名称空间:存放函数内定义的名字,在调用函数时生效,调用结束失效

加载顺序:内置名称空间---》全局名称空间----》局部名称空间

查找名字顺序:局部名称空间----》全局名称空间----》内置名称空间 (查找时会从自己当前位置开始查找)

作用域:发挥作用的空间

1,全局作用域:包含的是内置名称空间与全局名称空间的名字。

特点:1,在任何位置都能访问的到

2,该范围内的名字会伴随程序整个生命周期

2,局部作用域:包含的是局部名称空间的名字

特点:1,只能在函数内使用

2,调用时生效,结束失效

函数对象:

1、可以被引用

例 x=1

y=x

def bar():

print('from bar')

f=bar

f()

2、可以当中参数传入

例: x=1

def func(a):

print(a)

func(x)

3、可以当中函数的返回值

例 x=1

def foo():

return x

res=foo()

print(res)

4、可以当中容器类型的元素

例 x=1

l=[x,]

print(l)

闭包函数:

闭:指的是定义在函数内部的函数

注意:作用域关系在函数定义阶段就规定死了,与调用位置无关

闭包函数:定义在函数内部的函数,并且该函数包含对外部函数作用域中名字的引用,该函数就称为闭包函数

例 def outter():

name='egon'

def inner():

print('my name is %s' %name)

return inner

f=outter()

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域

应用领域:延迟计算(原来我们是传参,现在我们是包起来)

例 from urllib.request import urlopen

def index(url):

def get():

return urlopen(url).read()

return get

baidu=index('http://www.baidu.com')

print(baidu().decode('utf-8'))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值