파이썬에서 생성자에 여러 값을 전달할 수 있는지 궁금합니다.파이썬에서 생성자에 여러 값 전달하기
가>>> it = counter(10)
>>> next(it)
0
>>> next(it)
1
>>> it.send(8)
8
>>> next(it)
9
>>> next(it)
Traceback (most recent call last):
File "t.py", line 15, in <module>
it.next()
StopIteration
질문은 두 가지이다 :
def counter(maximum):
i = 0
while i < maximum:
val = (yield i)
# If value provided, change counter
if val is not None:
i = val
else:
i += 1
상기 기능을 실행 : I 하나를 전달하는 예를 알았다.
먼저 counter
함수가 변수 val
에 대해 어떻게 알 수 있습니까? 그것은 어디에도 정의되거나 전달되지 않는 것 같습니다. 발전기에 가치를 전달하고자 할 때이 이름을 사용하도록 강요하는 협약이 있습니까?
두 번째 질문은 어떻게 여러 값을 생성기에 전달할 수 있는가입니다. 단일 send()
통화로이 작업을 수행 할 수 있습니까? 아니면 여러 번 통화해야합니까?
. 루프의 마지막 반복을 제외하고 항상 'val'이 'None'이 아닌가? 즉, 생성기가 'yield'를 만나면 정확히 "동결"합니까? 실제로 조건부를 통과하여'i'가 무엇인지 결정하고 yield 한 다음 다른 next()가 실행될 때까지 실행을 일시 중단합니다. 호출 되었습니까? – MadPhysicist
cf 수정 된 답변 –