for 순환 밑바닥 작업 원리

2646 단어
for 순환은 용기를 교체하는 과정이다.
  • 무엇이 교체입니까?


  • 교체는 용기에 더 많은 원소가 없을 때까지 어떤 용기의 대상에서 원소를 하나하나 읽는 것이다.
  • for 순환의 절차는 무엇입니까?

  • 대상이 교체 가능한 대상인지 아닌지를 먼저 판단하고 그렇지 않으면 직접 오류를 보고하고 TypeError 이상을 던진다. 그렇다면 __iter__ 방법을 호출하여 교체기
  • 를 되돌려준다.
  • 끊임없이 교체기의 __next__ 방법을 호출하여 매번 교체기의 값을 순서대로 되돌려준다
  • 마지막까지 교체되고 더 많은 요소가 없으면 이상StopIteration을 던집니다. 이 이상python은 스스로 처리하고 개발자에게 노출되지 않습니다
  • 그렇다면 어떤 대상이 교체 조작을 지원합니까?어떤 상대라도 됩니까?


  • for 순환의 본질은 끊임없이 교체기를 호출하는 __next__ 방법으로 StopIteration 이상이 있을 때까지
    그래서 모든 교체 가능한 대상은 for 순환에 작용할 수 있다.
     
    for의 집행 원리를 이해한 후에 우리는 자신의 교체기를 for 순환에 사용할 수 있다.
     1 class MyRange:
     2     def __init__(self, num):
     3         self.i = 0
     4         self.num = num
     5 
     6     def __iter__(self): 7 return self 8 9 def __next__(self): 10 if self.i < self.num: 11 i = self.i 12 self.i += 1 13 return i 14 else: 15 #  ,  16 raise StopIteration() 
    __next__ 방법을 실현했기 때문에 MyRange 자체는 이미 교체기이기 때문에 __iter__ 되돌아오는 것은 대상 자체self이다.
     
    이제 for 순환에 사용해 보십시오:
    1 for i in MyRange(3):
    2     print(i)
    3 #  
    4  0
    5  1
    6  2

     
    사용자 정의MyRange 기능과 내장 함수range가 비슷하다는 것을 발견했습니까?
     
    요약:
    for 순환의 본질은 끊임없이 교체기__next__를 호출하는 방법으로 StopIteration 이상이 있을 때까지 교체할 수 있는 모든 대상이 for 순환에 작용할 수 있다.
     
    전재 대상:https://www.cnblogs.com/liangmingshen/p/9405875.html

    좋은 웹페이지 즐겨찾기