Python 생 성기 generator 용법 예시
생 성기 generator 는 본질 적 으로 함수 입 니 다.지난번 함수 체 에 있 었 던 위 치 를 기억 합 니 다.생 성기 함수 다음 호출 에 서 는 자동 으로 이 위 치 를 찾 을 수 있 습 니 다.부분 변 수 는 변 하지 않 습 니 다.
l = [x * 2 for x in range(10)] #      
g = (x * 2 for x in range(10))
print(l,g) # l        ,g    generator     
for index in g:
  print(index)
print(g.__next__())   # 0
print(g.__next__())   # 2
print(g.__next__())   # 4
print(g.__next__())   # 6
print(g.__next__())   # 8
보통 우리 가 0-50 의 수 를 인쇄 할 때 함 수 를 정의 합 니 다.이 함수 만 호출 하면 0-50 의 수 를 스스로 인쇄 합 니 다.
def fib(num):
  n = 0
  while n < num:
    print(n)
    n+=1
fib(50)
def fib(num):
  n = 0
  while n < num:
    yield n   #    yield    ,           n
    n+=1
g = fib(50)   #    g   generator
def fib():
  print("step 1")
  yield 1
  print("step 2")
  yield 2
  print("step 3")
  yield 3
g = fib()
g.__next__()  #   :step 1
g.__next__()  #   :step 2
g.__next__()  #   :step 3
next()할 때마다 한 문장 씩 인쇄 하 다가yield부 딪 히 면 바로 뛰 어 내 려 위 치 를 기록 하고 다시 집행next()할 때 기 록 된 그 위치 부터 아래로 집행 하 다가 다시 만 났 을 때 뛰 어 나 오 는 것 으로 나 타 났 다.이때 우 리 는 우리 가 끊임없이 호출
yield한다 면 이미 끝 났 는 지,경 계 를 넘 으 면 잘못 보고 할 수 있 는 지 를 어떻게 판단 해 야 할 지 생각 하지 않 을 것 이다.
# -* coding:utf-8 -*-
#! python3
'''
Created on 2018 8 10 
@author: Administrator
'''
def fib(num):
  n = 0
  while n < num :
    yield n
    n+=1
g = fib(10)
while True:
  print(g.__next__())
 
 옮 겨 다 니 는 것 이 끝 난 후에 이 호출
next()이 잘못 되 었 음 을 알 수 있 습 니 다.우 리 는 옮 겨 다 니 는 아래 표 시 를 얻 을 수 없습니다.그러면 우 리 는 어떻게 이 잘못 을 피해 야 합 니까?포 이상 처리
def fib(num):
  n = 0
  while n < num :
    yield n
    n+=1
g = fib(10)
while True:
  try:
    print(g.__next__())
  except StopIteration:
    print("    ")
    break
send 방법
단일 스 레 드 에서 간단 한 병행 효 과 를 실현 하 다.
# -*- coding:utf-8 -*-
#! python3
'''
Created on 2018 8 10 
@author: Administrator
'''
import time
def startEat(name):
  print("%s        "%name)
  while True:
    b = yield
    print("%s %s  "%(b,name))
def startMake():
  laowang = startEat("laowang")
  laowang.__next__()
  for index in range(10):
    time.sleep(1)
    print("       %d "%index)
    laowang.send("  %d "%index)
startMake() 
 더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.