zoukankan      html  css  js  c++  java
  • DAY13学习笔记

      叠加多个装饰器

        加载装饰器就是将原函数名偷梁换柱成了装饰器最内层那个wrapper函数。

        在加载完毕后,调用原函数其实就是在调用wrapper函数。

        当一个被装饰的对象同时叠加多个装饰器时

        装饰器的加载顺序是:自下而上。

        装饰器内wrapper函数的执行顺序是:自上而下。

      迭代器

        什么是迭代器:迭代指的是一个重复的过程,每一次重复都是基于上一次的结果而来的。

               迭代器指的是迭代取值的工具,该工具的特点是可以不依赖于索引取值。

        为何要用迭代器:为了找出一种通用的、可以不依赖于索引的迭代取值方式。

        如何用迭代器:可迭代的对象:但凡内置有:__iter__方法的对象都称之为可迭代的对象。(str,list,tuple,dict,set,文件对象)

               迭代器的对象:既内置有__iter__方法,又内置有__next__方法。(文件对象)

               (调用可迭代对象内置的__list__方法会有一个返回值,该返回值就是对应的迭代器对象)

               关于__iter__方法:

                  调用可迭代对象的__iter__会得到一个迭代器对象。

                  调用迭代器对象的__iter__会得到迭代器本身。

        总结迭代器的优缺点:

          优点:提供了一种通用的、可以不依赖于索引的迭代取值方式。

             同一时刻在内存中只有一个值,更加节省内存。

          缺点:取指定值不如索引灵活,并且迭代器是一次性的。

             无法预知迭代器数据的个数。

        (for循环准确的说应该是迭代器循环,for循环的原理如下:1. 先调用in后面那个值的__iter__方法,得到迭代器对象。

                                  2. 执行迭代器.__next__()方法得到一个返回值,然后赋值给一个变量k,运行循环体代码 。

                                  3. 循环往复,直到迭代器取值完毕抛出异常然后捕捉异常自动结束循环。

      自定义迭代器

        yield关键字:只能用在函数中。

              在函数中但凡包含有yield关键字,再去执行函数,就不会立刻运行函数体代码了。

              会得到一个返回值,该返回值称之为生成器对象,生成器本质就是迭代器。

          总结:提供一种自定义迭代器的解决方案。

             yield可以用于返回值。

             yield和return:相同点:都可以用于返回值。

                    不同点:yield可以暂停函数,yield可以返回多次值,而return只能返回一次值,函数就立即终止。

      生成器

        三元表达式

        列表生成式

        生成器表达式

        字典生成式

  • 相关阅读:
    Idea如果添加Maven模块
    idea在debugger模式下无法启动,但是在run模式下可以启动的问题
    Idea搭建SpringMVC框架(初次接触)
    Intellij IDEA 环境 tomcat 启动设置
    Winform .NET 利用NPOI导出大数据量的Excel
    unity3D AudioMixer+Slider实现音量调节,多音效控制(主音量,背景音,特效音等)
    unity3D 点击按钮暂停和继续游戏
    unity3D AsyncOperation异步加载场景&百分比效果
    unity3D 实现2D游戏背景层交错感(视觉差)
    unity3D 重新加载当前场景&加载当前场景的下一个场景
  • 原文地址:https://www.cnblogs.com/lipengjia/p/9720617.html
Copyright © 2011-2022 走看看