学习总结(十二) 1.表达式 2.函数对象的作用 3.名称空间的作用 4.函数的作用域 5.函数的闭包

1)三元表达式

      xxx if num>0 else xxxx

2) 列表推导式

     [i for i in range(1,10)]

3) 字典推导式

    { k,v for k,v in enumerate("abc')}

2.函数对象的作用

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

    1) 函数对象可以直接被引用

     2)函数对象可以做为参数传递

     3)函数对象可以获取返回值

      4)函数对象可以做为容器类型

      

3.名称空间的作用

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

      三种名称空间:

       Built-in:内置名称空间:系统级,一个随解释器执行而产生,解释器停止而销毁的名称空间

        Global:全局名称空间:文件级,多个:随所属文件加载而产生,文件运行完毕而销毁

        Local:局部名称空间:函数级,多个随所属函数执行而产生,函数执行完毕而销毁

        del关键字 名字可以移除查找最近的名字与内存空间地址的对应关系

      加载顺序:Built-in > Global >Local

4.函数的作用域

        作用域:名字起作用的范围

         作用域分为四种:

                   Built-in:内置作用域,作用文件的所有地方

                   Global:全局作用域:作用当前文件的所有地方

                   Enclosing:嵌套作用域:作用当前函数内部被嵌套的函数

                  Local:局部作用域:作用当前函数内部

      作用域的查找顺序:Local>Enclosing>Global>Built-in 

5.函数的闭包

         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