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可以返回多次值。

  • 相关阅读:
    OutputCache 缓存key的创建 CreateOutputCachedItemKey
    Asp.net Web Api源码调试
    asp.net mvc源码分析DefaultModelBinder 自定义的普通数据类型的绑定和验证
    Asp.net web Api源码分析HttpParameterBinding
    Asp.net web Api源码分析HttpRequestMessage的创建
    asp.net mvc源码分析ActionResult篇 RazorView.RenderView
    Asp.Net MVC 项目预编译 View
    Asp.net Web.config文件读取路径你真的清楚吗?
    asp.net 动态创建TextBox控件 如何加载状态信息
    asp.net mvc源码分析BeginForm方法 和ClientValidationEnabled 属性
  • 原文地址:https://www.cnblogs.com/taostaryu/p/8681261.html
Copyright © 2011-2022 走看看