비동기식 IO-Associal Review yield from
3533 단어 python
def g1(iterable):
yield iterable
def g2(iterable):
yield from iterable
for value in g1(range(10)):
print(value)
for value in g2(range(10)):
print(value)
결과:yield가 출력한 것은range(10)이고,yieldfrom은 그의 교체 데이터를 출력했다.
range(0, 10)
0
1
2
3
4
5
6
7
8
9
yieldfrom을 배우기 전에 라이브러리를 알아야 한다. chain, 이 라이브러리는 임의의 여러 개의 데이터를 교체할 수 있다.list,dict, 등을 포함한다.
from itertools import chain
my_list = [1,2,3]
my_dict = {
"bobby":"http://project.com",
"bobby2":"http://www.immoc.com"
}
for value in chain(my_dict,my_list,range(5,10)):
print(value)
그것이 실현한 기능은 이렇다. 그 중의 데이터를 하나하나 교체해 내다
bobby
bobby2
1
2
3
5
6
7
8
9
이제 우리 스스로 찬이를 이루자.
# chain
def my_chain(*args,**kwargs):
for my_iterable in args:
for value in my_iterable:
yield value
for value in my_chain(my_dict,my_list,range(5,10)):
print(value)
발생하는 값도
bobby
bobby2
1
2
3
5
6
7
8
9
지금은요.
def my_chain(*args,**kwargs):
for my_iterable in args:
yield from my_iterable # yield from
for value in my_chain(my_dict,my_list,range(5,10)):
print(value)
생성된 결과는 다음과 같다. yieldfrom은 위의 코드를 간소화했다. 사실 yieldfrom은 모든 데이터를 교체하는 데 그치지 않고 내부에 많은 이상 처리를 실현했다.
bobby
bobby2
1
2
3
5
6
7
8
9
그리고 yieldfrom의 사용 방법을 사용하면 호출자와 하위 생성기 사이에 양방향 채널을 만들어 연결을 실현할 수 있습니다
def g1(gen):
yield from gen
def main():
g = g1()
g.send(None)
# main g1( ),gen
# yield from
이것은 일드 프롬의 실전 예인데,
final_result = {}
def sales_sum(pro_name):
total = 0
nums = []
while True:
x = yield
print(pro_name+" :",x)
if not x:
break
total+=x
nums.append(x)
return total,nums
def middle(key):
while 1:
final_result[key] = yield from sales_sum(key)
print(key+" !")
def main():
data_set = {
"bobby ":[1200,1500,3000],
"bobby ":[1600,1700,13000,1200],
"bobby ":[2300,2100,10,60]
}
for key,data_set in data_set.items():
print("start key",key)
m = middle(key)
m.send(None) # middle
for value in data_set:
m.send(value) #
m.send(None)
print("final_result",final_result)
"""
#
"""
def sales_sum1(pro_name):
total = 0
nums = []
while True:
x = yield
print(pro_name+" :",x)
if not x:
break
total+=x
nums.append(x)
return total,nums
if __name__ == '__main__':
my_gen =sales_sum1("boobby ")
my_gen.send(None)
my_gen.send(1000)
my_gen.send(1300)
my_gen.send(1200)
try:
my_gen.send(None)# ,
except StopIteration as e:#
result = e.value
print(result) # yield from
그것이 최종적으로 실현된 효과는 이렇다. 모두가 위의 코드를 복사하여 IED에 가서 스스로 분석하고 실행할 수 있다.이것은 위에 있는 Yield from의 사용 방법과 관련이 있다.호출자, 위탁 생성기와 하위 생성기와 관련이 있고 하위 생성기는 호출자와 양방향 채널을 실현할 수 있다.
boobby : 1000
boobby : 1300
boobby : 1200
boobby : None
(3500, [1000, 1300, 1200])
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.