zoukankan      html  css  js  c++  java
  • 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__

  • 相关阅读:
    ACM题集以及各种总结大全
    ACM题集以及各种总结大全
    线段树题集
    线段树题集
    POJ 1159 Palindrome【LCS+滚动数组】【水题】
    POJ 1159 Palindrome【LCS+滚动数组】【水题】
    开课博客
    第一周学习进度
    开学测试
    寒假总结
  • 原文地址:https://www.cnblogs.com/chengxuyuandashu/p/3760611.html
Copyright © 2011-2022 走看看