리보그월드와 일반 파이썬에서 사용할 수 있는 함수 정의 가이드입니다.
1. 함수란?
함수는 코드의 덩어리에 이름을 붙여 재사용할 수 있게 하는 도구입니다.
-
같은 코드를 여러 번 쓸 때
-
코드를 읽기 쉽게 만들 때
-
복잡한 문제를 작은 단위로 나눌 때
함수를 사용합니다.
2. 함수 정의 기본 문법
def 함수이름():
# 함수 본문 (들여쓰기 필수)
명령1
명령2
...
구성 요소
|
요소 |
설명 |
|---|---|
|
|
함수를 정의한다는 키워드 (define 의 약자) |
|
|
함수의 이름 (영문, 숫자, |
|
|
인자 (매개변수) 를 넣는 괄호 |
|
|
함수 정의의 끝을 알림, 본문 시작 |
|
들여쓰기 |
함수 본문은 반드시 들여써야 함 (일반적으로 공백 4 칸) |
3. 기본 예제
예제 1: 인자 없는 함수
def greet():
print("안녕하세요!")
print("반갑습니다.")
greet()
greet()
실행 결과:
안녕하세요!
반갑습니다.
안녕하세요!
반갑습니다.
예제 2: 리보그에서 오른쪽 돌기
def turn_right():
turn_left()
turn_left()
turn_left()
turn_right()
예제 3: 여러 동작을 하나로 묶기
def go_three_steps():
move()
move()
move()
turn_left()
go_three_steps()
go_three_steps()
4. 인자 (매개변수) 가 있는 함수
인자란?
함수에 넣어주는 값입니다. 함수가 작업을 수행하는 데 필요한 정보를 전달합니다.
예제 4: 인자 하나
def greet(name):
print(f"안녕하세요, {name}님!")
greet("철수")
greet("영희")
실행 결과:
안녕하세요, 철수님!
안녕하세요, 영희님!
예제 5: 인자 여러 개
def add(a, b):
result = a + b
print(f"{a} + {b} = {result}")
add(3, 5)
add(10, 20)
실행 결과:
3 + 5 = 8
10 + 20 = 30
용어 정리
|
용어 |
설명 |
|---|---|
|
매개변수 (parameter) |
함수를 정의할 때 괄호 안에 쓰는 변수 |
|
인자 (argument) |
함수를 호출할 때 실제로 전달하는 값 |
5. 값을 돌려주는 함수 (return)
함수가 작업을 마친 후 결과를 돌려줄 때 return 을 사용합니다.
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 8
return 의 특징
-
return을 만나면 함수가 즉시 끝납니다 -
return이 없으면 함수는None을 돌려줍니다 -
return은 여러 개 있을 수 있습니다 (조건에 따라 다른 값 반환)
def check_positive(n):
if n > 0:
return "양수"
elif n < 0:
return "음수"
else:
return "0"
print(check_positive(5)) # 양수
print(check_positive(-3)) # 음수
print(check_positive(0)) # 0
6. 기본 인자 (기본값)
인자에 기본값을 정해둘 수 있습니다. 인자를 안 주면 기본값이 사용됩니다.
def greet(name, message="안녕하세요"):
print(f"{message}, {name}님!")
greet("철수")
greet("영희", "반가워요")
실행 결과:
안녕하세요, 철수님!
반가워요, 영희님!
7. 함수 호출 방법
함수를 정의한 후에는 이름과 괄호로 호출합니다.
def my_function():
print("함수 실행")
my_function() # 호출
자주 하는 실수
|
잘못된 코드 |
올바른 코드 |
이유 |
|---|---|---|
|
|
|
호출할 때는 괄호가 필요 |
|
|
|
괄호가 없으면 함수가 실행되지 않음 |
|
|
|
본문은 반드시 들여써야 함 |
8. 함수 정의 순서
-
def키워드 작성 -
함수 이름 작성 (영문 소문자,
_사용 권장) -
괄호
()작성 (인자가 있으면 안에 작성) -
콜론
:작성 -
다음 줄부터 들여쓰기 (공백 4 칸)
-
함수 본문 작성
-
필요하면
return작성
9. 리보그 예제 모음
예제 1: 오른쪽 돌기
def turn_right():
turn_left()
turn_left()
turn_left()
turn_right()
예제 2: 제자리에서 한 바퀴 돌기
def turn_around():
turn_left()
turn_left()
turn_around()
예제 3: 허들 넘기
def turn_right():
turn_left()
turn_left()
turn_left()
def jump():
turn_left()
move()
turn_right()
move()
turn_right()
move()
turn_left()
while not at_goal():
if front_is_clear():
move()
else:
jump()
예제 4: 3 칸 이동 후 왼쪽으로 돌기
def go():
move()
move()
move()
turn_left()
go()
go()
go()
10. 좋은 함수 이름 짓기
|
좋은 예 |
나쁜 예 |
이유 |
|---|---|---|
|
|
|
무슨 일을 하는지 알 수 없음 |
|
|
|
이름이 너무 짧고 의미 없음 |
|
|
|
약어보다 명확한 이름이 좋음 |
이름 규칙
-
영문 소문자 사용
-
단어 사이는
_(언더스코어) 로 연결 -
동사 + 명사 형태 권장 (
get_data,print_result) -
숫자로 시작하지 않음
11. 함수의 장점
-
재사용성: 같은 코드를 여러 번 쓸 수 있음
-
가독성: 코드가 무엇을 하는지 이름으로 알 수 있음
-
수정 용이: 한 곳만 고치면 모든 호출에 적용됨
-
문제 분해: 큰 문제를 작은 함수로 나눌 수 있음
12. 주의사항
1. 들여쓰기
함수 본문은 반드시 들여써야 합니다.
# ❌ 잘못된 코드
def greet():
print("안녕") # 들여쓰기 없음
# ✅ 올바른 코드
def greet():
print("안녕") # 공백 4 칸 들여쓰기
2. 정의 전에 호출 금지
함수는 정의한 후에 호출해야 합니다.
# ❌ 잘못된 코드
greet()
def greet():
print("안녕")
# ✅ 올바른 코드
def greet():
print("안녕")
greet()
3. 콜론 : 잊지 않기
# ❌ 잘못된 코드
def greet()
print("안녕")
# ✅ 올바른 코드
def greet():
print("안녕")
13. 연습 문제
문제 1
다음 함수를 정의하고 호출하세요.
-
이름:
say_hello -
하는 일: "Hello!" 출력
# 여기에 코드 작성
문제 2
다음 함수를 정의하고 호출하세요.
-
이름:
turn_right -
하는 일:
turn_left()를 세 번 호출
# 여기에 코드 작성
문제 3
다음 함수를 정의하고 호출하세요.
-
이름:
move_forward -
인자:
steps(이동할 칸 수) -
하는 일:
move()를steps만큼 반복
힌트: for 반복문 사용
# 여기에 코드 작성
14. 참고 자료
-
Python 공식 문서: Defining Functions
-
리보그 공식 문서: 세번째 규칙
-
W3Schools: Python Functions