고급 파이썬 개발 과정
챕터
>
레벨
고급 함수
람다 함수
목표
나중에 선적을 위해 수집할 수 있도록 일부 소모품들을 문서화하기 위해 람다 함수를 사용하세요.
들판에 있는 과일과 열매 중 일부는 거의 수확할 준비가 되어 있어 저장, 선적, 판매가 가능합니다. 이 수확 준비가 거의 된 품목들을 파악해두면 이 들판에서 얼마나 많은 제품이 포장 및 배송되는지 추정할 수 있습니다.
코드를 최적화하기 위해 람다 함수를 사용할 수 있습니다. 이는 사용자 정의 함수를 만드는 또 다른 방법으로, 생성하는 함수가 간단할 때 훨씬 빠르게 설정할 수 있습니다.
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
위의 예제에서는 사용자 정의 함수와 람다 함수 두 가지 함수가 있습니다. 작성 방식은 다르지만 기능적으로 동일하며, 람다 함수가 단지 사용하기 더 쉽고 코드 중간에 즉석에서 빠르게 설정할 수 있습니다. 그렇다고 하더라도 복잡한 코드 시퀀스에는 일반적인 함수 정의 방식이 여전히 매우 유용합니다.
들판에 분류할 수 있는 품목에는 두 (2) 가지 유형이 있습니다: "fruits"와 "berries". 이 두 (2) 가지 유형 중에서 과일은 세 (3) 가지: apples, pears 및 oranges; 그리고 열매는 세 (3) 가지: red, blue 및 purple입니다.
먼저 위에 설명된 람다 함수 calculate를 설정합니다. 이 함수는 세 가지 품목을 더한 후 두 (2)를 곱하여 시즌에 예측되는 품목 수를 구할 수 있도록 해줍니다. 사용자 정의 speak 함수로 작동하는 또 다른 람다 함수 estimate를 생성하세요. 마지막으로 두 값을 더하고 세 번째 값(loss)을 빼는 람다 함수 total을 설정하세요.
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
세 (3) 가지 과일 각각에 대한 변수를 생성하고 들판에 있는 각 과일의 개수를 더하세요. 어두운 X 표시로 걸어가서 세 과일 변수를 모두 사용해 람다 함수 calculate()를 실행하고 그 값을 fruit_number라는 사용자 정의 변수에 저장하세요. 예: fruit_number = calculate(orange,pear,apple) . 이어서 fruit_number를 숫자로, "fruits"를 이름으로 하여 estimate() 람다 함수를 사용하세요. 예: estimate(fruit_number, "fruits" ) .
과일 작업이 끝나면, 밝은 X 표시로 걸어가서 동일한 작업을 열매에 대해 수행하세요. 들판에서 세 (3) 가지 열매 종류의 관목 수를 세어 변수를 설정한 후, 과일과 동일하게 람다 함수를 설정하세요. 예: berry_number = calculate(red,blue,purple) . berry_number와 "berries"를 인자로 하여 estimate 람다 함수를 사용하세요.
doc이라는 상수가 있는데, 이 상수는 지난달 손실된 제품에 대한 추정치를 보관하고 있습니다. 창고로 이동하여 금색 X 표시로 걸어가 테이블 위의 문서를 읽기 위해 speak() 함수를 사용하여 지난달의 숫자를 확인하세요.
지난달의 숫자를 확인한 후, 보라색 카펫 위의 어두운 X 표시로 걸어가 테이블을 마주한 후 이번 달의 총계를 산출하세요. fruit_number와 berry_number를 숫자로, 그리고 doc 상수에서 판별한 손실 값(loss)을 사용하여 시즌의 총합을 계산하는 season이라는 변수를 생성하세요. 예: season = total(berry_number,fruit_number, number found in doc constant)
이어서 season 변수를 숫자 인자로, "products"를 이름 인자로 하여 estimate() 람다 함수를 사용하면 레벨을 완료할 수 있습니다.