zoukankan      html  css  js  c++  java
  • 函数进阶

    函数对象

    函数是第一类对象,即函数可以当作数据传递。

    1.可以被引用

    2.可以当作参数传值

    3.返回值可以是函数

    4.可以当作容器类型的元素

    函数的嵌套调用:在函数内又调用了其它函数。

    名称空间:存放名字与值绑定关系的地方。

    名称空间分类:

          1.内置名称空间:python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效。

            2.全局名称空间:文件级别的名字,在执行文件时生效,在文件结束或执行期间被删除则失效。

              3.局部名称空间:函数内定义的名字(函数的参数以及函数内的名字都存放于局部名称空间)。在函数调用时临时生效,调用结束则失效。

    加载顺序:内置名称空间-->全局名称空间-->局部名称空间

    查找名字:局部名称空间-->全局名称空间-->内置名称空间(注意:在全局无法查看局部的,在局部可以查看全局的)

    作用域(作用域即范围)

    全局作用域:包含的是内置名称空间与全局名称空间的名字特点:

         1.在任何位置都能够访问到

         2.该范围内的名字会伴随程序整个生命周期

    局部作用域:包含的是局部名称空间的名字的特点:

         1.只能在函数内使用

         2.调用函数时生效,调用结束失效

    闭包函数

    指的是定义在函数内不的函数,并且该函数包含对外部函数作用域中名字的引用,该函数称为“闭包函数”

    软件一旦上线,就应该遵循开放封闭原则,对扩展开放,对修改源代码及使用方式是封闭

    1.不修改源代码

    2.不修改调用方式

    装饰器目标:在遵循1和2的前提下为被装饰对象添加上新功能

    迭代器:迭代的工具

    迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来,它就是一个迭代取值的工具。

    可迭代的对象:在python中,但凡内置有__iter__方法的对象,都是可迭代的对象,执行后得到的返回值就是迭代器对象。(没有索引也能取值)

    迭代器的优点

    1.提供了一种可不依赖于索引的取值方式

    2.迭代器更加节省内存

    迭代器的缺点

    1.取值麻烦,只能按顺序一个一个取,只能往后取值。

    2.并且是一次性取值,无法用len获取长度

    迭代器对象(文件本身就是迭代器对象)

    1.获取迭代器对象的方式:

    执行可迭代对象的__iter__方法,拿到的返回值就是迭代器对象

    2.特点

    内置有__next__方法,执行该方法会拿到迭代器对象中的一个值

    内置有__iter__方法,执行该方法会拿到迭代器本身

    for循环称之为迭代器循环,in后跟的必须是可迭代的对象

    生成器

    生成器本身就是迭代器,也就是说生成器的玩法就是迭代器的玩法。yield暂停效果

    1.为我们提供了一种自定义迭代器的方式,可以在函数内用yield关键字,调用函数拿到的结果就是一个生成器,生成器就是迭代器。

    2.yield可以像return一样用于返回值,区别是return只能返回一次值,而yield可以返回多次值。

  • 相关阅读:
    循环语句 for , forin , forEach
    Haxe
    Haxe数据类型
    jango中间件的使用
    python的遍历模式
    python文件读写
    python3.5以上自带的虚拟环境在各种环境下的使用方法
    冒泡排序
    工厂方法模式
    redis 配置
  • 原文地址:https://www.cnblogs.com/taostaryu/p/8681261.html
Copyright © 2011-2022 走看看