고급 파이썬 개발 과정
챕터
>
레벨
고급 함수
부분 함수
목표
부분 함수를 사용하여 도크에 배달된 건축 자재를 포장하고 배치합니다.
일부 자재가 도크에 막 도착했습니다. 이 자재들은 건설 자재로 사용될 수 있도록 포장되어 보관되어야 합니다. 자재는 천으로 감싸고 실로 묶어야 합니다. 모든 물품을 포장할 때 무게를 측정하는 것이 중요하며, 이는 나중에 효과적으로 운송하기 위함입니다. 이를 용이하게 하기 위해 부분 함수를 사용하여 이 과정을 최적화할 수 있습니다.
부분 함수는 대부분 일관된 인자값을 넣을 필요가 없도록 단축된 사용자 정의 함수입니다. 이를 통해 여러 인자를 받는 함수를 단일 인자 또는 원하는 인자 수만으로 실행할 수 있습니다.
from functools import partial
처음에는 functools 모듈에서 partial 을 import 해야 합니다. 이렇게 하면 부분 함수를 생성할 수 있습니다. import 코드는 항상 코드 에디터의 상단에 위치합니다.
weight 라는 이름의 함수를 설정하고 세(3) 개의 인자: thread, cloth 및 material 을 받도록 하세요. 이 함수는 포장된 자재의 무게를 계산하는 데 사용되며, 부분 함수를 통해 이 과정을 더욱 최적화할 수 있습니다.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
부분 함수 package 를 생성하세요. 이는 lambda 함수와 유사한 과정으로 설정됩니다. partial() 을 사용하여 함수를 생성하고, 함수 이름과 고정할 인자값들을 추가하세요.
원래 함수에서 할당하지 않은 인자는 부분 함수에 의해 할당되어야 할 인자가 됩니다. package() 부분 함수의 경우, 이는 material 인자입니다.
상자 앞의 어두운 X 표시로 이동하여 포장 자재를 집어보세요. 노란색 카펫의 X 표시에서는 collect() 함수를 사용하여 "thread"를 수집하고, 보라색 카펫의 X 표시에서는 collect() 함수를 사용하여 "cloth"를 수집하세요. 이 항목들은 자재 포장에 사용됩니다.
도크를 건너 모든 건설 자재를 집으세요. 이 자재들은: bricks, planks, red_bricks 및 wood 입니다. 수집한 후, 각 자재의 수를 동일한 이름의 변수에 추가하세요. 예를 들어: bricks = 3 과 같이 처리합니다.
이후 상자 앞의 밝은 X 표지로 이동하여 저장하기 전에 각 건설 자재의 무게를 계산합니다. speak() 함수를 package() 부분 함수와 함께 사용하여 무게를 계산하세요. 예를 들어, package() 함수에 자재 변수를 인자로 전달하여 다음과 같이 사용합니다:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
이어서 place() 함수를 사용하여 자재를 상자 안에 보관합니다. 위 예제와 같이 package() 함수를 사용하세요.
red 카펫이 있는 밝은 X 표시에서는 bricks 를, blue 카펫이 있는 밝은 X 표시에서는 planks 를, orange 카펫이 있는 밝은 X 표시에서는 red_bricks 를, green 카펫이 있는 밝은 X 표시에서는 wood 를 순서대로 무게 측정 후 보관하세요. 레벨을 완료하기 위해 네(4) 개의 자재 모두를 올바른 상자에 저장하고 무게를 측정하세요.