🔥 함수 정의와 호출

453자
6분

함수는 파이썬 프로그래밍에서 중요한 개념 중 하나로, 코드의 재사용성과 구조화에 큰 도움을 줍니다. 이번 장에서는 함수를 정의하고 호출하는 방법에 대해 자세히 살펴보겠습니다. 각 섹션에서는 예제를 통해 개념을 설명하고, 파이썬 코드로 실제 구현 방법을 배울 것입니다.

함수의 개념과 중요성

함수는 프로그램에서 실행할 코드 블록을 정의하고 이름을 붙이는 방법입니다. 이렇게 정의된 함수는 필요할 때 여러 번 호출할 수 있으며, 코드의 재사용성을 높이고 가독성을 향상시킵니다. 함수는 파이썬 프로그래밍의 핵심 요소 중 하나로, 모듈화와 유지 보수를 쉽게 만들어줍니다.

python
def greet(name):
    """인사말을 출력하는 함수"""
    print(f"안녕하세요, {name}님!")
 
# 함수 호출
greet("Alice")
greet("Bob")
 
python
def greet(name):
    """인사말을 출력하는 함수"""
    print(f"안녕하세요, {name}님!")
 
# 함수 호출
greet("Alice")
greet("Bob")
 

함수 정의 및 구조

함수는 def 키워드를 사용하여 정의하며, 함수 이름과 매개변수를 지정합니다. 함수 내부의 코드 블록은 들여쓰기로 구분하며, 함수를 호출할 때 이 코드 블록이 실행됩니다. 함수 정의 구조를 자세히 살펴보겠습니다.

python
def 함수이름(매개변수):
    """함수의 도큐먼트 스트링"""
    # 함수의 동작을 구현하는 코드
    return 결과값
 
python
def 함수이름(매개변수):
    """함수의 도큐먼트 스트링"""
    # 함수의 동작을 구현하는 코드
    return 결과값
 

매개변수와 인수

함수는 매개변수(parameter)를 통해 외부에서 값을 받아올 수 있습니다. 이러한 값을 인수(argument)라고 합니다. 함수를 호출할 때 인수를 전달하여 함수의 동작을 제어할 수 있습니다.

python
def add(a, b):
    """두 수를 더하는 함수"""
    result = a + b
    return result
 
# 함수 호출
sum_result = add(3, 5)
print(sum_result)  # 출력: 8
 
python
def add(a, b):
    """두 수를 더하는 함수"""
    result = a + b
    return result
 
# 함수 호출
sum_result = add(3, 5)
print(sum_result)  # 출력: 8
 

기본 매개변수와 키워드 인수

파이썬에서는 함수의 매개변수에 기본 값을 지정할 수 있습니다. 이렇게 하면 함수를 호출할 때 인수를 생략할 수 있으며, 필요한 경우 키워드 인수를 사용하여 값을 전달할 수 있습니다.

기본 매개변수와 키워드 인수

python
def greet(name, greeting="안녕하세요"):
    """인사말을 출력하는 함수"""
    print(f"{greeting}, {name}님!")
 
# 함수 호출
greet("Alice")               # 출력: "안녕하세요, Alice님!"
greet("Bob", greeting="Hi")  # 출력: "Hi, Bob님!"
 
python
def greet(name, greeting="안녕하세요"):
    """인사말을 출력하는 함수"""
    print(f"{greeting}, {name}님!")
 
# 함수 호출
greet("Alice")               # 출력: "안녕하세요, Alice님!"
greet("Bob", greeting="Hi")  # 출력: "Hi, Bob님!"
 

가변 인수

가변 인수를 사용하면 함수를 호출할 때 임의의 개수의 인수를 전달할 수 있습니다. 이를 통해 다양한 상황에 대처할 수 있는 유연한 함수를 작성할 수 있습니다.

python
def average(*numbers):
    """여러 수의 평균을 계산하는 함수"""
    total = sum(numbers)
    avg = total / len(numbers)
    return avg
 
# 함수 호출
result = average(2, 4, 6, 8, 10)
print(result)  # 출력: 6.0
 
python
def average(*numbers):
    """여러 수의 평균을 계산하는 함수"""
    total = sum(numbers)
    avg = total / len(numbers)
    return avg
 
# 함수 호출
result = average(2, 4, 6, 8, 10)
print(result)  # 출력: 6.0
 

반환 값

함수는 값을 반환할 수 있으며, return 키워드를 사용하여 반환 값을 지정합니다. 반환 값은 함수가 실행한 결과를 외부로 전달하는데 사용됩니다.

python
def square(x):
    """숫자의 제곱을 반환하는 함수"""
    return x ** 2
 
# 함수 호출
result = square(5)
print(result)  # 출력: 25
 
python
def square(x):
    """숫자의 제곱을 반환하는 함수"""
    return x ** 2
 
# 함수 호출
result = square(5)
print(result)  # 출력: 25
 

함수의 범위와 전역 변수

파이썬에서 함수 내부에서 정의된 변수는 해당 함수 내부에서만 유효합니다. 함수 외부에서 정의된 변수는 전역 변수(global variable)로 취급되며, 함수 내부에서 접근할 수 있습니다.

python
global_var = 10
 
def my_function():
    local_var = 5
    print(global_var)  # 함수 내부에서 전역 변수 접근 가능
    print(local_var)
 
# 함수 호출
my_function()
print(global_var)  # 함수 외부에서도 전역 변수 접근 가능
 
python
global_var = 10
 
def my_function():
    local_var = 5
    print(global_var)  # 함수 내부에서 전역 변수 접근 가능
    print(local_var)
 
# 함수 호출
my_function()
print(global_var)  # 함수 외부에서도 전역 변수 접근 가능
 

연습문제

  1. 두 수를 더하는 함수를 작성하고 호출해보세요.
  2. 인사말을 출력하는 함수를 작성하고 기본 매개변수를 설정해보세요.
  3. 임의의 개수의 숫자를 받아 평균을 계산하는 함수를 작성해보세요.
  4. 주어진 숫자를 제곱하는 함수를 작성해보세요.
  5. 함수 내부에서 전역 변수와 지역 변수를 선언하고 각각 출력해보세요.

YouTube 영상

채널 보기
함수형 데이터 타입 | 프로그래머를 위한 카테고리 이론
함수 타입과 Hom-Set 이해하기 | 프로그래머를 위한 카테고리 이론
NestJS 가드, 바이딩과 스코프 | NestJS 가이드
NestJS 빌트인 파이프 ParseIntPipe, ParseUUIDPipe 사용하기 | NestJS 가이드
Zod로 스키마 유효성 검사 구현하기 | NestJS 가이드
입력을 전처리하는 Functor - Contravariant와 contramap 이해하기 | 프로그래머를 위한 카테고리 이론
NestJS 역할 기반 접근 권한 부여 - Guard, Reflector | NestJS 가이드
변환 파이프로 컨트롤러 코드 깔끔하게 만들기 | NestJS 가이드