好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

详解Python中for循环的工作原理

如果你对python中的for循环不是很清楚,那么建议你看看这篇文章,本文主要给大家介绍了关于Python中for循环是如何工作的相关资料,介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

>>> for elem in [1,2,3]:
...  print(elem)
...
1
2
3 
>>> for i in ("zhang", "san", 30):
...  print(i)
...
zhang
san
30 
>>> for c in "abc":
...  print(c)
...
a
b
c 
>>> for i in {"a","b","c"}:
...  print(i)
...
b
a
c 
>>> for k in {"age":10, "name":"wang"}:
...  print(k)
...
age
name 
>>> for line in open("requirement.txt"):
...  print(line, end="")
...
Fabric==1.12.0
Markdown==2.6.7 
>>> class MyRange:
...  def init(self, num):
...   self.num = num
...
>>> for i in MyRange(10):
...  print(i)
...
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'MyRange' object is not iterable 
>>> x = [1,2,3]
>>> its = x.iter() # x有此方法,说明列表是可迭代对象
>>> its
<list_iterator object at 0x100f32198>

>>> its.next() # its有此方法,说明its是迭代器
1
>>> its.next()
2
>>> its.next()
3
>>> its.next()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
StopIteration 
class MyRange:
 def init(self, num):
  self.i = 0
  self.num = num

 def iter(self):
  return self

 def next(self):
  if self.i < self.num:
   i = self.i
   self.i += 1
   return i
  else:
   # 达到某个条件时必须抛出此异常,否则会无止境地迭代下去
   raise StopIteration() 
for i in MyRange(3):
 print(i)
#  
输出 0 1 2

有没有发现,自定义的 MyRange 功能和内建函数 range很相似。for 循环本质是不断地调用迭代器的next方法,直到有 StopIteration 异常为止,所以任何可迭代对象都可以作用在for循环中。

以上就是详解Python中for循环的工作原理的详细内容,更多请关注Gxl网其它相关文章!

查看更多关于详解Python中for循环的工作原理的详细内容...

  阅读:47次