Python 读书笔记

Syntax best practice:
  • List Comprehensions
    >>>  [i  for  i  in  range( 10 if  i  %   2   ==  0]

    Enumeration:
    >>>  def _treatment(pos, element):
      return  ' %d: %s ' % (pos, element)

    >>> seq = [ " one "" two "" three "]
    >>> [_treatment(i, el)  for i, el  in enumerate(seq)]
    [ ' 0: one '' 1: two '' 2: three ']

    Iterators and Generators
    >>>  def fibonacci():
     a, b = 0, 1
      while True:
      yield b  # 这里返回 generator,一个特殊的iterator
     a, b = b, a + b

    >>> fib = fibonacci()
    >>> fib.next()
    1
    >>> fib.next()
    1
    >>> fib.next()
    2
    >>> [fib.next()  for i  in range(10)]
    [3, 5, 8, 13, 21, 34, 55, 89, 144, 233]
    generators should be considered every time you deal with a
    function that returns a sequence or works in a loop;
    It is better to have a lot of simple iterable functions that work over
    sequences of values than a complex function that computes the result for
    one value at a time.
    >>>  def my_generator():
      try:
      yield  ' something '
      except ValueError:
      yield  ' dealing with the exception '
      finally:
      print  " ok let's clean "

    >>> gen = my_generator()
    >>> gen.next()
    ' something '
    >>> gen.throw(ValueError( ' mean mean mean '))
    ' dealing with the exception '
    >>> gen.close()
    ok let ' s clean
    >>> gen.next()
    Traceback (most recent call last):
    File  " <stdin> ", line 1,  in <module>
    StopIteration

你可能感兴趣的:(Python 读书笔记)