반복되는 코드를 제거하기 위해 코드를 함수에 넣은 상태로 함수를 추가하는 것처럼, 코드를 정리 하겠어요. 하면 좋은 일인데 정의한 함수는 그리 썩 유연하진 않아요. 변수는 함수 안에 정의했기 때문에 각각 다른 값의 각이나 거리를 사용하려고 하면 새 함수를 작성해야 하거든요. 육각형 함수는 한가지 크기의 육각형만 그려요!
이게 왜 매개 변수를 함수에 주어야 하느냐에 대한 이유인데, 매개 변수는 *인자*라고도 해요. 이 방법을 통해 함수 안의 *변수*에 함수를 호출할 때 매번 다른 값을 줄 수 있어요:
앞의 장에서 line_without_moving()
함수를 어떻게 정의했는지 기억해보세요:
def line_without_moving():
turtle.forward(50)
turtle.backward(50)
여기에 매개 변수를 주어 구현할 수도 있어요:
def line_without_moving(length):
turtle.forward(length)
turtle.backward(length)
매개 변수는 함수 내부에 정의한 걸로 알려진 변수 처럼 동작해요. 새로 정의한 함수는 매개 변수에 넣으려는 값으로 호출하는 방법을 통해 다음 처럼 사용해요:
line_without_moving(50)
line_without_moving(40)
따라하기 안내서 앞부분의 turtle.forward()
, turtle.left()
, 등을 사용할 때부터 우리는 이미 매개 변수와 함수를 같이 활용해보았어요.
그리고 우리가 원하는 대로 수많은 인자(또는 매개 변수)를 놓을 수 있는데요, 이 값을 쉼표로 구분할 수 있고 다른 이름을 줄 수 있어요:
def tilted_line_without_moving(length, angle):
turtle.left(angle)
turtle.forward(length)
turtle.backward(length)
함수를 호출할 때마다 원하는 크기로 육각형을 그릴 수 있는 함수를 작성해보세요.
def hexagon(size):
for _ in range(6):
turtle.forward(size)
turtle.left(60)