파이썬은 세 가지 파이썬 발전기의 항목입니다
1, 발전기
(1) 발전기는 무엇입니까?
코어 : 발전기의 성격은 반복자입니다
반복자는 파이썬이 온다
빌더 프로그래머는 반복자를 작성하는
def func():
print("这是一个函数")
return "函数"
func()
def func():
print("这是一个生成器")
yield "生成器"
(2) 패턴 발생기의 제조 :
<1> 기록 된 함수에 기초
<2> 유도 조제
(3) 발생 기능 :
발전기 함수 발생기에 의해 구성
<1> 상기 몸체의 수율 나타내는 함수 발생기를 선언하는 것으로 보인다 (발전기 - 발전기)
<2>) (다음의 수율에 대응
def func():
msg = input("请输入内容")
yield msg
print("这是第二次启动")
yield "生成器2"
yield "生成器3"
yield "生成器4"
g = func()
print(next(g))
print(next(g))
print(next(g))
print(next(g))
# 生成器的本质就是迭代器.迭代器如何取值,生成器就如何取值
<3> 수득 간의 차이를 리턴 :
1> 동일한 점 :
내용이 반환된다
여러 반환 할 수 있지만 수익은 서면 복수를 실행합니다
2> 다른 :
반환 종료 함수 발생기 수율이 일시 중단
수득 현재 실행 위치를 기록 할 수있다
액션 (4) 발전기 : 공간 절약
(5) 사용 시나리오 :
데이터 파일이나 컨테이너 다량, 이는 발전기를 사용하는 것이되면
(6) 반복자의 차이, 빌더는 무엇 무엇입니까?
<1> 내지 주소 :
반복자 주소 : <0x000000987B6E97F0에서 list_iterator 개체>
주소 생성기 : <0x00000087C2A10CA8에서 발생 객체 FUNC>
<2> 송신 () 메소드 (제 없음 보내지한다 () 메소드를 보내)
전송하지 마십시오 () 메소드는 반복자입니다
송신하여 () 메소드는 발전기이다
def func():
a = yield 1
print(a)
b = yield 2
print(b)
g = func()
print(g.send(None)) # send -- 发送
print(g.send("alex")) # send -- 发送
print(g.send("宝元")) # send -- 发送
. 1> (보내기 및 다음) 차이 :
같은 점 :
발전기는 회 하방 대응 수득 할 수 있도록 ()를 전송하고 다음으로.
얻을 수 수율 값이 생성된다.
차이 :
제 취득 수율 값은 ((없음)을 보낼 수있다) 전송할 수없는 경우 다음에 사용될 수있다.
설정 값이 전송 수득 전송할 수있다.
(7) 수율 차이의 수율
수익률은 일회성 수익을 반복 가능 객체
반복 가능한에서 수율은 하나 하나를 반환
def func():
def foo():
print(11)
lst = {"key":1,"key1":2}
yield foo
print(func().__next__())
def func():
lst = [1,2,3,45,6]
lst1 = ["alex","wusir","taibi","baoyuan"]
yield from lst
yield from lst1
g = func()
for i in g:
print(i)
lst = [1,2,3,45,6]
lst1 = ["alex","wusir","taibi","baoyuan"]
for i in lst,lst1:
print(i)
(8) 반복 가능 객체, 비교기 반복자 발생기 :
반복 가능 객체
장점 :리스트, 튜플 시간, 편리한 값을 저장 .str, (자신의 개인 방법) 유연한
단점 : 메모리를 많이 소비
반복자
장점 : 공간을 절약
단점 : 직접 유연성, 시간 소비, 일회성, 비 역행 사용하여 값을 볼 수 없습니다
발전기
장점 : 공간을 절약은 임의로 정의
단점 : 직접 값, 시간 소비, 일회성, 비 역행을 볼 수 없습니다