函数嵌套与闭包函数

函数嵌套:

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

 

名称空间与作用域

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

名称空间分类:

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

转载于:https://www.cnblogs.com/liqingxiaobai/articles/8680968.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值