text: #!/usr/bin/env python
  # -*- encoding: utf-8 -*-
  """
  Topic: 方向迭代
  Desc : 
  """
  
  
  def reverse_iterate():
      a = [1, 2, 3, 4]
      for x in reversed(a):
          print(x)
  
      # 两个条件：大小可知或者实现__reversed__方法，
      # 如果都不满足，先转换为list
      # Print a file backwards
      # f = open('somefile')
      # for line in reversed(list(f)):
      #     print(line, end='')
  
      for rr in reversed(Countdown(30)):
          print(rr)
      for rr in Countdown(30):
          print(rr)
  
  
  class Countdown:
      def __init__(self, start):
          self.start = start
  
      # Forward iterator
      def __iter__(self):
          n = self.start
          while n > 0:
              yield n
              n -= 1
  
      # Reverse iterator
      def __reversed__(self):
          n = 1
          while n <= self.start:
              yield n
              n += 1
  
  
  if __name__ == '__main__':
      reverse_iterate()
  
  