파이썬 함수의 기본 구조부터 매개변수, return, 기본값, 가변 인자까지 초보자 기준으로 예제와 함께 정리합니다.
파이썬 함수는 반복되는 코드를 하나로 묶어 다시 사용할 수 있게 해주는 문법입니다. 같은 코드를 여러 번 쓰는 대신 함수로 만들면 코드가 짧아지고, 수정하기도 쉬워집니다.
처음에는 함수가 조금 낯설 수 있습니다. 하지만 실제로는 “자주 쓰는 작업에 이름을 붙이는 것”에 가깝습니다.
함수가 필요한 이유
같은 인사 문장을 여러 번 출력한다고 생각해보겠습니다.
print("안녕하세요")
print("안녕하세요")
print("안녕하세요")
이 정도는 괜찮아 보일 수 있습니다. 하지만 같은 작업이 10번, 100번 반복된다면 코드가 금방 지저분해집니다.
이럴 때 함수를 사용합니다.
def say_hello():
print("안녕하세요")
say_hello()
say_hello()
say_hello()
def say_hello():는 say_hello라는 함수를 만든다는 뜻입니다.
그 아래 들여쓰기 된 코드는 함수가 실행될 때 동작하는 내용입니다.
마지막의 say_hello()는 만든 함수를 호출하는 코드입니다.
함수는 만들어두기만 해서는 실행되지 않습니다. 반드시 함수 이름 뒤에 괄호를 붙여 호출해야 실행됩니다.
함수의 기본 구조
파이썬 함수의 기본 구조는 다음과 같습니다.
def 함수이름():
실행할 코드
예제를 하나 더 보겠습니다.
def print_line():
print("----------------")
print_line()
print("회원 정보")
print_line()
실행 결과는 다음과 같습니다.
----------------
회원 정보
----------------
print_line() 함수는 구분선을 출력하는 역할만 합니다. 이렇게 간단한 함수라도 코드의 의미가 명확해집니다.
매개변수가 있는 함수
함수는 외부에서 값을 받아 사용할 수 있습니다.
이때 함수가 받는 값을 매개변수라고 합니다.
def say_hello(name):
print(name + "님, 안녕하세요")
say_hello("민수")
say_hello("지영")
실행 결과는 다음과 같습니다.
민수님, 안녕하세요
지영님, 안녕하세요
여기서 name이 매개변수입니다.
함수를 호출할 때 전달한 "민수", "지영" 값이 함수 안의 name에 들어갑니다.
매개변수를 여러 개 받는 함수
매개변수는 하나만 받을 수 있는 것이 아닙니다.
여러 개의 값을 받을 수도 있습니다.
def add(a, b):
print(a + b)
add(3, 5)
add(10, 20)
실행 결과는 다음과 같습니다.
8
30
a와 b는 함수 안에서만 사용하는 이름입니다.
함수를 호출할 때 add(3, 5)라고 쓰면 a에는 3, b에는 5가 들어갑니다.
return으로 결과 돌려주기
지금까지는 함수 안에서 바로 print()를 사용했습니다.
하지만 실제 코드에서는 함수가 계산한 결과를 다시 돌려줘야 할 때가 많습니다. 이때 return을 사용합니다.
def add(a, b):
return a + b
result = add(3, 5)
print(result)
실행 결과는 다음과 같습니다.
8
return a + b는 a + b의 결과를 함수 밖으로 돌려준다는 뜻입니다.
함수 호출 결과를 result 변수에 저장한 뒤 출력할 수 있습니다.
print와 return의 차이
초보자가 자주 헷갈리는 부분이 print와 return입니다.
print()는 화면에 보여주는 역할입니다.
return은 함수의 결과를 밖으로 보내는 역할입니다.
def add_print(a, b):
print(a + b)
x = add_print(2, 3)
print(x)
실행 결과는 다음과 같습니다.
5
None
함수 안에서 print(a + b)로 5는 출력됐습니다.
하지만 return을 하지 않았기 때문에 함수의 결과값은 None입니다.
반대로 return을 사용하면 결과를 변수에 저장해서 다시 사용할 수 있습니다.
def add_return(a, b):
return a + b
x = add_return(2, 3)
print(x * 10)
실행 결과는 다음과 같습니다.
50
계산 결과를 다시 사용해야 한다면 return을 쓰는 편이 좋습니다.
기본값 매개변수
함수의 매개변수에는 기본값을 지정할 수 있습니다.
def greet(name="사용자"):
print(name + "님, 안녕하세요")
greet("민수")
greet()
실행 결과는 다음과 같습니다.
민수님, 안녕하세요
사용자님, 안녕하세요
greet()처럼 값을 전달하지 않으면 기본값인 "사용자"가 사용됩니다.
단, 기본값이 있는 매개변수는 보통 기본값이 없는 매개변수 뒤에 둡니다.
def introduce(name, age=20):
print(name, age)
이런 형태는 자연스럽습니다.
키워드 인자
함수를 호출할 때 매개변수 이름을 직접 지정할 수도 있습니다.
def introduce(name, age):
print("이름:", name)
print("나이:", age)
introduce(name="민수", age=25)
introduce(age=30, name="지영")
이렇게 매개변수 이름을 지정해서 전달하는 값을 키워드 인자라고 합니다.
키워드 인자를 사용하면 순서가 바뀌어도 어떤 값이 어디에 들어가는지 명확합니다.
가변 인자 args
몇 개의 값이 들어올지 모를 때는 *args를 사용할 수 있습니다.
def add_all(*args):
total = 0
for number in args:
total += number
return total
print(add_all(1, 2, 3))
print(add_all(10, 20, 30, 40))
실행 결과는 다음과 같습니다.
6
100
*args는 여러 값을 튜플 형태로 받습니다.
함수에 전달할 값의 개수가 정해져 있지 않을 때 유용합니다.
함수 안의 변수와 밖의 변수
함수 안에서 만든 변수는 기본적으로 함수 안에서만 사용할 수 있습니다.
def test():
message = "안녕하세요"
print(message)
test()
print(message)
이 코드는 오류가 납니다.
message는 함수 안에서 만든 변수이기 때문에 함수 밖에서는 사용할 수 없습니다.
이런 범위를 스코프라고 합니다.
초보 단계에서는 “함수 안에서 만든 변수는 함수 안에서만 쓴다”고 이해하면 충분합니다.
함수 이름을 지을 때 주의할 점
함수 이름은 코드의 의미를 설명할 수 있어야 합니다.
def a():
pass
이런 이름은 좋지 않습니다. 무엇을 하는 함수인지 알기 어렵기 때문입니다.
아래처럼 동작이 드러나는 이름이 좋습니다.
def calculate_total_price():
pass
def print_user_info():
pass
def get_average_score():
pass
파이썬에서는 보통 소문자와 밑줄을 사용해 함수 이름을 짓습니다.
자주 하는 실수
1. 함수를 만들고 호출하지 않음
def hello():
print("안녕하세요")
이 코드는 함수를 만들기만 한 상태입니다.
실행하려면 아래 코드가 필요합니다.
hello()
2. 들여쓰기를 잘못함
def hello():
print("안녕하세요")
파이썬은 들여쓰기가 문법의 일부입니다. 함수 안의 코드는 반드시 들여쓰기해야 합니다.
def hello():
print("안녕하세요")
3. return과 print를 혼동함
함수 결과를 다시 사용해야 한다면 return을 사용해야 합니다.
단순히 화면에 보여주기만 한다면 print()를 사용할 수 있습니다.
정리
파이썬 함수는 코드를 재사용하기 위한 기본 문법입니다.
def로 함수를 만들고, 함수 이름 뒤에 괄호를 붙여 호출합니다. 외부에서 값을 받을 때는 매개변수를 사용하고, 결과를 돌려줄 때는 return을 사용합니다.
처음에는 작은 함수부터 만들어보는 것이 좋습니다.
예를 들어 “두 수를 더하는 함수”, “이름을 받아 인사하는 함수”, “점수 평균을 구하는 함수”처럼 단순한 함수부터 연습하면 함수의 구조가 자연스럽게 익숙해집니다.
'개발 > python' 카테고리의 다른 글
| 파이썬 파일 입출력: 텍스트 파일 읽고 쓰는 기본 방법 (0) | 2026.05.22 |
|---|---|
| 파이썬 예외 처리: 오류가 나도 프로그램이 멈추지 않게 하는 방법 (0) | 2026.05.22 |
| 파이썬 반복문 for while 사용법 쉽게 이해하기 (0) | 2026.05.21 |
| 파이썬 조건문 if 사용법 쉽게 이해하기 (0) | 2026.05.21 |
| 파이썬 딕셔너리와 집합 set 쉽게 이해하기 (0) | 2026.05.21 |