• Python高级编程


    List Comprehension

    1.列表推导    [i for i in range(10) if i%2 == 0]      -> [0, 2, 4, 6, 8],   i也可以是一个函数,该风格比C语言思想的代码风格效率高

    2.enumerate   取到了序列中的序列号好内容

    for index, item in enumerate(sequence):
        process(index, item)

    迭代器:   要创建定制的迭代器,可以编写一个具有next方法的类,只要该类能够提供返回迭代器实例(self)发__iter__特殊方法

        基于方法:next  返回容器的下一个项目    i.next()

                         __iter__  返回迭代器本身    i = iter('abc')

    生成器:基于yield指令,可以暂停一个函数并返回中间结果,该函数将保存执行环境并可以在必要时恢复,不能有return,yield这与return的情况不同。return是真正的离开代码块,所以会在return时立刻执行finally子句而yield不会。

                   yield将返回一个generator对象,为一个特殊的迭代器

                  send,send的工作机制与next一样,但yield将变成能够返回传入的值,   实例.send("***")       value = (yield)    可以根据客户端代码来改变其行为

                  throw,close    实例.throw() 传入要抛出的任何类型的异常    这个方法用于关闭生成器。对关闭的生成器后再次调用next或send将抛出StopIteration异常。

    协同程序(Trampoline, multitask, cintextlib, greenlet):可以挂起/恢复,并且有多个进入点的函数,类似线程,但不用资源锁,生成器几乎就是协调程序

    生成器表达式:(x**2 for x in range(10) if x%2 == 0)

    好文介绍:http://www.cnblogs.com/huxi/archive/2011/07/14/2106863.html

    itertools模块:包括islice,tee,groupby模式

    装饰器:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html

               包括编写装饰器,参数检查,缓存,代理,上下文提供者

    with和contextlib      

    举例:  with file('path') as hosts:

                    ........

                 可替代:

                hosts = file('path')

                try:

                       .......

               finally:

                    hosts.close()

    Python类:

        避免多重继承

        super必须使用一致,都是用super或不是用super

        不要混用老式和新式类

        调用父类时必须检查类层次

    类描述符:自定义在引用一个对象上的特性时所应完成的事情

         描述符类必须实现三个方法:

            __set__,__get__, __delete__

  • 相关阅读:
    Daily Scrum 12.9
    成员总结
    反省与深思
    M1事后分析报告--We have power to change the origin state
    PowerTeam--Alpha阶段个人贡献分及转会人员
    Pipeline Alpha版本项目展示
    js 字符串操作函数
    js与jq对数组的操作
    js 与 jq 的节点添加删除实例
    js,jq,css选择器
  • 原文地址:https://www.cnblogs.com/chengxuyuandashu/p/3760611.html
Copyright © 2020-2023  润新知