• python之函数对象、名称空间、嵌套、作用域、闭包


    函数对象

    # 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象

    # 函数对应的原因
    # 1 可以直接被引用
    # 2 可以当作函数参数传递
    # 3 可以作为函数的返回值
    # 4 可以作为容器类型的元素

     

    名称空间

    # 名称空间:存放名字与内存空间地址对应关系的容器
    # 作用:解决由于名字有限,导致名字重复发送冲突的问题

    # 三种名称空间
    # Built-in:内置名称空间;系统级,一个;随解释器执行而产生,解释器停止而销毁
    # Global:全局名称空间;文件级,多个;随所属文件加载而产生,文件运行完毕而销毁
    # Local:局部名称空间;函数级,多个;随所属函数执行而产生,函数执行完毕而销毁

    # 注:
    # del 名字:可以移除查找最近的名字与内存空间地址的对应关系
    # 加载顺序:Built-in > Global > Local

     

    函数的嵌套定义

    # 理由:一个函数要使用另一个函数中的变量

     

    作用域

    # 作用域:名字起作用的范围
    # 作业:解决同名字可以共存问题

    # 四种作用域
    # Built-in:内置作用域
    # Global:全局作用域
    # Enclosing:嵌套作用域
    # Local:局部作用域

    # 注:
    # 不同作用域之间名字不冲突,以达到名字的重用
    # 查找顺序:Local > Enclosing > Global > Built-in

     

    闭包

    # closure:被包裹的函数,称之为闭包

    # 完整的闭包结构:1.将函数进行闭包处理;2.提升函数名的作用域

    # 案例:延迟加载
    def get_site(url): #url='https://www.baidu.com'
       def site():
           response=requests.get(url)
           if response.status_code == 200:
               print(response.text)

       return site
    baidu=get_site('https://www.baidu.com')
    python=get_site('https://www.python.org')

     

  • 相关阅读:
    移动端必备rem布局
    个人工作经历、近些日来一些面试总结
    JavaScript面向对象核心知识归纳
    微信开发工具下载地址
    每天运动步数周月切换显示
    爬虫-requests
    django请求生命周期,FBV和CBV,ORM拾遗,Git
    Django + Uwsgi + Nginx 的生产环境部署
    沈阳润才教育CRM
    网络编程
  • 原文地址:https://www.cnblogs.com/dongxixi/p/10648925.html
Copyright © 2020-2023  润新知