zoukankan      html  css  js  c++  java
  • 命名空间与闭包

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

      

     

    人若有恒 无所不成
  • 相关阅读:
    Alpha版与Beta版
    URL的概念
    正则表达式(即:匹配模式Pattern)
    前置与后置的递增/递减操作符
    【平板电脑模拟器】PC端-Chrome自带的功能
    【HOSTS相关】前端提供测试模板地址
    【netlimiter】的使用
    <转>window.event对象在ie与ff中的区别
    <转>全面理解javascript的caller,callee,call,apply概念(修改版)
    document.styleSheets以及js中实现样式表的切换、样式的增加减少
  • 原文地址:https://www.cnblogs.com/weihuchao/p/6676430.html
Copyright © 2011-2022 走看看