• 命名空间与闭包


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

      

     

    人若有恒 无所不成
  • 相关阅读:
    遇到的问题
    getContextPath、getServletPath、getRequestURI的区别
    js判断是否是ie浏览器
    js判断浏览器类型和版本
    最短JS判断是否为IE6(IE的写法)
    Console命令详解,让调试js代码变得更简单
    让table中td的内容靠上对齐
    <c:out>标签中的escapeXML属性
    指纹识别技术设计的注意事项
    嵌入式指纹检索系统设计
  • 原文地址:https://www.cnblogs.com/weihuchao/p/6676430.html
Copyright © 2020-2023  润新知