命名空间与闭包

1 名称空间与作用域

   在Python中所有名字的定义都放到namespace中

  名称空间分类:

    内置名称空间

      import this 

      dir(buil-in) 查看全部内置

    全局名称空间

    局部名称空间

      在函数体内等

  查询全局和局部

    globals()方法可以获得全局的内容

      该方法获得的全局内容是调用的时候程序之前已经定义过的全局内容

    locals()方法可以获得局部的内容

2 函数嵌套和静态嵌套域

   函数嵌套调用

    函数里面调用别的函数

  函数的嵌套定义

    在函数里面定义别的函数

3 函数对象与闭包

  函数对象

    函数名称可以被赋值给变量

    函数的执行时函数名称加()

    新赋值的变量也可以加括号执行

  闭包

    闭包用于包裹函数内部的作用域, 不包裹外部的作用域

    闭包的基本形式是:

      在函数F1中, 定义F2, F2只能引用F1定义的变量, 之后F1函数返回F2的函数名字

      这样就保证了可以将F1的执行结果赋予给一个变量, 该变量可以在之后的任何时刻随时可以运行

x = 100
def f1():
    x=1
    y=2
    def f2():
        print(x,y)
    return f2

f=f1()
f()
print(f.__closure__)
print(f.__closure__[0].cell_contents)
print(f.__closure__[1].cell_contents)

    利用闭包完成爬取Python官网页面

from urllib.request import urlopen
def f1(url):
    def f2():
        print(urlopen(url).read())

    return f2
python=f1('http://www.python.org')

python()
python()

  

 

转载于:https://www.cnblogs.com/weihuchao/p/6676430.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值