파이썬 함수 정의 매뉴얼

리보그월드와 일반 파이썬에서 사용할 수 있는 함수 정의 가이드입니다.


1. 함수란?

함수는 코드의 덩어리에 이름을 붙여 재사용할 수 있게 하는 도구입니다.

  • 같은 코드를 여러 번 쓸 때

  • 코드를 읽기 쉽게 만들 때

  • 복잡한 문제를 작은 단위로 나눌 때

함수를 사용합니다.


2. 함수 정의 기본 문법

def 함수이름():
    # 함수 본문 (들여쓰기 필수)
    명령1
    명령2
    ...

구성 요소

요소

설명

def

함수를 정의한다는 키워드 (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()  # 호출

자주 하는 실수

잘못된 코드

올바른 코드

이유

my_function:

my_function()

호출할 때는 괄호가 필요

my_function

my_function()

괄호가 없으면 함수가 실행되지 않음

def my_function() (들여쓰기 없음)

def my_function(): + 들여쓰기

본문은 반드시 들여써야 함


8. 함수 정의 순서

  1. def 키워드 작성

  2. 함수 이름 작성 (영문 소문자, _ 사용 권장)

  3. 괄호 () 작성 (인자가 있으면 안에 작성)

  4. 콜론 : 작성

  5. 다음 줄부터 들여쓰기 (공백 4 칸)

  6. 함수 본문 작성

  7. 필요하면 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. 좋은 함수 이름 짓기

좋은 예

나쁜 예

이유

turn_right()

tr()

무슨 일을 하는지 알 수 없음

jump_over_hurdle()

a()

이름이 너무 짧고 의미 없음

calculate_total()

calc()

약어보다 명확한 이름이 좋음

이름 규칙

  • 영문 소문자 사용

  • 단어 사이는 _ (언더스코어) 로 연결

  • 동사 + 명사 형태 권장 (get_data, print_result)

  • 숫자로 시작하지 않음


11. 함수의 장점

  1. 재사용성: 같은 코드를 여러 번 쓸 수 있음

  2. 가독성: 코드가 무엇을 하는지 이름으로 알 수 있음

  3. 수정 용이: 한 곳만 고치면 모든 호출에 적용됨

  4. 문제 분해: 큰 문제를 작은 함수로 나눌 수 있음


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. 참고 자료