파이썬 함수: 개념 및 사용법
**함수(Function)**는 코드를 재사용 가능하도록 묶은 코드 블록입니다. 함수는 입력값을 받아 처리를 수행하고, 결과를 반환할 수 있습니다. 이를 통해 코드의 중복을 줄이고, 가독성을 높이며, 유지보수를 용이하게 합니다.
1. 함수의 기본 구조
파이썬에서 함수를 정의하려면 def 키워드를 사용합니다.
def 함수이름(매개변수):
"""(선택적) 함수의 설명"""
실행할 코드
return 반환값 # (선택적)
예제:
def greet(name):
"""사용자를 환영하는 메시지를 출력합니다."""
return f"안녕하세요, {name}님!"
print(greet("철수")) # 안녕하세요, 철수님!
2. 함수 호출
- 함수를 정의한 후, 함수 이름과 함께 필요한 인자를 전달하여 호출합니다.
- 예제:
def add(a, b): return a + b result = add(3, 5) print(result) # 8
3. 매개변수와 인자
(1) 위치 인자 (Positional Arguments)
- 인자의 순서가 매개변수에 매칭됩니다.
- 예제:
def multiply(a, b): return a * b print(multiply(2, 3)) # 6
(2) 키워드 인자 (Keyword Arguments)
- 인자의 이름을 명시하여 매개변수에 값을 전달.
- 순서에 의존하지 않음.
- 예제:
def divide(a, b): return a / b print(divide(b=2, a=10)) # 5.0
(3) 기본값이 있는 매개변수 (Default Arguments)
- 매개변수에 기본값을 설정하여, 값이 전달되지 않으면 기본값 사용.
- 예제:
def greet(name="사용자"): return f"안녕하세요, {name}님!" print(greet()) # 안녕하세요, 사용자님! print(greet("민수")) # 안녕하세요, 민수님!
(4) 가변 인자 (Variable-Length Arguments)
- 함수가 전달받는 인자의 개수를 모를 때 사용.
가변 위치 인자 (*args)
- 여러 개의 위치 인자를 하나의 튜플로 전달.
- 예제:
def total_sum(*args): return sum(args) print(total_sum(1, 2, 3, 4)) # 10
가변 키워드 인자 (**kwargs)
- 여러 개의 키워드 인자를 하나의 딕셔너리로 전달.
- 예제:
def display_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") display_info(name="Alice", age=25, city="Seoul") # name: Alice # age: 25 # city: Seoul
4. 함수 반환값
(1) 단일 값 반환
return키워드로 값 반환.- 예제:
def square(x): return x * x print(square(5)) # 25
(2) 여러 값 반환
- 튜플로 여러 값을 반환.
- 예제:
def calculate(a, b): return a + b, a - b result = calculate(5, 3) print(result) # (8, 2)
5. 람다 함수 (Lambda Function)
- 간단한 함수를 한 줄로 정의할 때 사용.
-
구문 형식:
lambda 매개변수: 표현식 -
예제:
square = lambda x: x * x print(square(4)) # 16 -
함수의 인자로 사용 가능:
numbers = [1, 2, 3, 4, 5] squares = list(map(lambda x: x * x, numbers)) print(squares) # [1, 4, 9, 16, 25]
6. 함수 스코프
(1) 지역 변수 (Local Variable)
- 함수 내부에서 선언된 변수는 해당 함수 내에서만 사용 가능.
- 예제:
def my_function(): x = 10 print(x) # 10 my_function() # print(x) # NameError: x is not defined
(2) 전역 변수 (Global Variable)
- 함수 외부에서 선언된 변수는 모든 함수에서 접근 가능.
- 예제:
x = 10 def my_function(): print(x) # 10 my_function()
(3) global 키워드
- 함수 내부에서 전역 변수를 수정하려면
global키워드 사용. - 예제:
x = 10 def update_global(): global x x = 20 update_global() print(x) # 20
(4) nonlocal 키워드
- 중첩 함수에서 상위 함수의 변수를 수정하려면
nonlocal키워드 사용. - 예제:
def outer_function(): x = 10 def inner_function(): nonlocal x x = 20 inner_function() print(x) # 20 outer_function()
7. 재귀 함수 (Recursive Function)
- 함수가 자기 자신을 호출하는 함수.
- 종료 조건을 반드시 포함해야 함.
- 예제: 팩토리얼 계산
def factorial(n): if n == 1: return 1 return n * factorial(n - 1) print(factorial(5)) # 120
8. 함수 데코레이터
- 함수의 동작을 확장하거나 수정할 때 사용.
-
구문 형식:
@데코레이터_이름 def 함수이름(): 실행할 코드 -
예제:
def decorator(func): def wrapper(): print("함수 실행 전") func() print("함수 실행 후") return wrapper @decorator def say_hello(): print("Hello!") say_hello() # 함수 실행 전 # Hello! # 함수 실행 후
요약
- 함수 정의 및 호출:
def키워드를 사용하여 정의, 함수 이름으로 호출. - 매개변수와 반환값: 위치 인자, 키워드 인자, 기본값, 가변 인자를 활용.
- 스코프: 지역 변수와 전역 변수를 구분하며, 필요시
global과nonlocal사용. - 람다 함수: 간단한 함수를 간결하게 표현.
- 재귀 함수: 함수 내에서 자기 자신 호출.
- 데코레이터: 함수의 동작을 쉽게 확장.
파이썬 함수는 유연하고 강력한 기능을 제공하여 다양한 작업을 간결하고 효율적으로 처리할 수 있습니다. 😊