Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬 함수는 정확히 어떻게 객체를 반환/양보합니까?

<시간/>

return 문은 파이썬 함수가 종료하고 호출자에게 값을 돌려주도록 합니다. 일반적으로 함수의 목적은 입력을 받아 무언가를 반환하는 것입니다. return 문은 한 번 실행되면 함수의 마지막 문이 아니더라도 즉시 함수의 실행을 종료합니다.

값을 반환하는 함수를 결실 함수라고도 합니다.

예시

주어진 코드는 다음과 같은 출력을 제공합니다.

def sum(a,b):
     return a+b
sum(5,16)

출력

21

발전기

제너레이터는 목록 및 튜플과 같은 반복자 또는 반복 가능하지만 한 번만 반복할 수 있습니다. 모든 값을 메모리에 저장하지 않고 즉석에서 값을 생성하기 때문입니다.

예시

mygenerator = (x*x for x in range(4))
for i in mygenerator:
      print i,

출력

0 1 4 9

제너레이터는 한 번만 사용할 수 있기 때문에 mygenerator에서 i에 대해 두 번째로 수행할 수 없습니다. 제너레이터는 0을 계산한 다음 잊어버리고 1, 4를 계산하고 9를 차례로 계산합니다.

수율

yield는 함수가 생성기를 반환한다는 점을 제외하고는 return처럼 사용되는 키워드입니다.

다음 코드를 사용하여 다음과 같이 생성기의 반환값에 액세스합니다.

예시

def createGenerator():
      for i in range(4):
           yield i*i      #  this code creates a generator
mygenerator = createGenerator()
print(mygenerator) # mygenerator is an object!
# for i in mygenerator:
#      print i,
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))

출력

<generator object createGenerator at 0xb71e27fc>
0
1
4
9
Traceback (most recent call last):
  File "yieldgen1.py", line 12, in <module>
    print(next(mygenerator))
StopIteration

설명

위 예제의 yield 문은 mygenerator를 생성했습니다. 한 번만 사용할 수 있습니다. 다음(mygenerator) 명령을 사용하여 계산합니다. 한 번만 사용할 수 있습니다. 먼저 0을 계산한 다음 잊어버리고 두 번째로 1을 계산하고 세 번째로 4를 계산하고 네 번째로 9를 계산한 다음 다섯 번째에서 목록 요소가 소진되어 StopIteration 오류를 발생시킵니다.