다른 분들의 Python 소스코드를 보다가 검색어를 발견했습니다. 여러 검색을 통해 드디어 알아냈습니다.
#🎜 🎜 #
일반적인 for...in... 루프에서 in 뒤에는 배열이 옵니다. 이 배열은 연결된 목록, 문자열 및 파일과 유사한 반복 가능한 객체입니다. mylist= [1, 2, 3] 또는 mylist = [x*x for x in range(3)]일 수 있습니다. 단점은 모든 데이터가 메모리에 저장되어 있어 데이터 양이 많으면 메모리를 많이 소모하게 된다는 점이다. (추천 학습:Python 동영상 튜토리얼)
생성기는 반복할 수 있지만 한 번만 읽을 수 있습니다. 사용될 때 생성되기 때문입니다. 예를 들어 mygenerator = (x*x for x in range(3)) 여기서는 ()가 사용되었으며 이는 배열이 아니며 위의 예는 []입니다. 생성기가 반복될 수 있다는 것을 이해하는 데 있어 핵심은 next() 메서드가 있다는 것입니다. 작동 원리는 예외가 발견될 때까지 next() 메서드를 반복적으로 호출하는 것입니다. 위의 mygenerator를 사용하여 테스트할 수 있습니다.Yield가 포함된 함수는 더 이상 일반 함수가 아니라 반복에 사용할 수 있는 생성기입니다. 작동 원리는 위와 동일합니다.
yield는 return과 유사한 키워드입니다. 반복 중에 Yield가 발생하면 Yield 이후의 값이 반환됩니다. 요점은 다음 반복에서는 이전 반복에서 발생한 항복 이후의 코드부터 실행이 시작된다는 것입니다.
간단한 이해:yield는 return이 값을 반환하고 반환된 위치를 기억하고 다음 반복이 이 위치에서 시작된다는 의미입니다.
yield가 있는 함수는 for 루프에서 사용될 뿐만 아니라 이 함수의 매개변수가 반복 매개변수를 허용하는 한 함수의 매개변수로도 사용할 수 있습니다. 예를 들어 array.extend 함수의 프로토타입은 array.extend(iterable)입니다. send(msg)와 next()의 차이점은 send가 항복 표현식에 매개변수를 전달할 수 있다는 것입니다. 전달된 매개변수는 항복 표현식의 값으로 사용되며, 항복의 매개변수는 다음과 같습니다. 호출자 값으로 반환됩니다. ——즉, send는 이전 항복 표현식의 값을 강제로 수정할 수 있습니다. 예를 들어, 함수에 항복 할당 a= 항복 5가 있습니다. 여기서 첫 번째 반복은 5를 반환하며 a에는 값이 할당되지 않았습니다. 두 번째 반복에서는 .send(10)를 사용하고 a 표현식의 값은 원래 None이었던 10으로 강제 수정된 다음 a=10send(msg) 및 next( )입니다. 모두 반환 값을 가집니다. 반환 값은 현재 반복에서 Yield가 발생할 때 Yield 이후 표현식의 값입니다. 실제로는 현재 반복에서 Yield 이후의 매개 변수입니다. 먼저 next() 또는 send(None)를 호출해야 합니다. 그렇지 않으면 오류가 보고됩니다. send 후 None인 이유는 현재 이전 수익률이 없기 때문입니다(기사에 따르면). 8). next()는 send(None)과 동일하다고 생각할 수 있습니다. 더 많은 Python 관련 기술 기사를 보려면Python Tutorial 열을 방문하여 알아보세요!
위 내용은 파이썬 수익률은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!