1. 기본 함수
가장 기본적인 함수로, 단순히 출력만 수행합니다. say_hello 함수를 실행하면 "Hello World!"가 출력됩니다.
def say_hello():
print("Hello World!")
say_hello()
Python
복사
2. 매개변수 함수
매개변수는 함수에 전달되는 값으로, 함수의 동작을 유연하게 만들어주는 중요한 요소입니다. 함수를 정의할 때 매개변수를 지정하면, 함수를 호출할 때 다양한 값을 전달하여 다른 결과를 얻을 수 있습니다. 이를 통해 코드의 재사용성을 높이고 더 유연한 프로그래밍이 가능해집니다.
def greet_user(name):
print(f"안녕하세요, {name}님!")
# 함수 호출 예시
greet_user("주현") # 출력: 안녕하세요, 주현님!
greet_user("영희") # 출력: 안녕하세요, 영희님!
Python
복사
3. 리턴값이 있는 함수
함수의 리턴(return)은 함수가 작업을 수행한 후 결과값을 반환하는 기능입니다.
def add_numbers(x, y):
"""두 수를 더해서 결과를 반환하는 함수"""
result = x + y
return result # 계산된 결과를 반환
# 함수 사용 예시
sum_result = add_numbers(5, 3) # 반환된 값을 변수에 저장
print(sum_result) # 8 출력
Python
복사
리턴의 주요 특징
•
함수의 실행을 즉시 종료하고 값을 반환합니다
•
여러 개의 값을 동시에 반환할 수 있습니다 (튜플 형태로 반환)
•
return 문이 없는 함수는 기본적으로 None을 반환합니다
# 여러 값을 반환하는 함수
def get_user_info():
name = "김철수"
age = 25
return name, age # 여러 값 반환
# 반환값 받기
user_name, user_age = get_user_info()
Python
복사
4. 기본값 매개변수 함수
기본값 매개변수 함수는 매개변수에 기본값을 설정하여 함수를 더 유연하게 사용할 수 있게 해주는 기능입니다.
1.
기본값이 설정된 매개변수는 함수 호출 시 값을 전달하지 않아도 됩니다.
2.
코드 예시
def greet_with_title(name, title="님"):
print(f"안녕하세요, {name}{title}")
greet_with_title("영희") # 기본값 "님" 사용
greet_with_title("영희", "박사님") # "박사님"으로 기본값 대체
Python
복사
•
title 매개변수의 기본값은 "님"입니다
•
greet_with_title("영희")처럼 title 인자를 생략하면 기본값 "님"이 사용됩니다
•
greet_with_title("영희", "박사님")처럼 새로운 값을 전달하면 기본값 대신 전달된 값이 사용됩니다
이러한 기능을 통해 함수를 더 유연하게 사용할 수 있으며, 선택적 매개변수를 효과적으로 처리할 수 있습니다.
5. 문서화된 함수
Docstrings를 사용하여 함수의 기능을 문서화합니다.
def multiply(a, b):
"""
두 숫자를 곱하는 함수입니다.
Args:
a (int): 첫 번째 숫자
b (int): 두 번째 숫자
Returns:
int: 두 숫자의 곱
"""
return a * b
Python
복사
Docstrings는 help() 함수나 doc 속성을 사용하여 출력할 수 있습니다.
help(multiply) # help() 함수 사용
print(multiply.__doc__) # __doc__ 속성 사용
Python
복사
6. 변수 범위 함수
지역변수는 함수 내에서만 사용 가능하고, 전역변수는 프로그램 전체에서 사용 가능한 변수입니다. 아래 코드에서 global_var는 전역변수이고 local_var는 지역변수입니다.
global_var = 10 #전역변수
def scope_test():
local_var = 20 #지역변수
print(f"전역변수: {global_var}")
print(f"지역변수: {local_var}")
Python
복사
7. 재귀 함수
재귀 함수는 자기 자신을 반복적으로 호출하여 문제를 해결하는 함수입니다. 위의 예시에서는 팩토리얼(n!)을 계산하기 위해 n * (n-1)!의 패턴으로 자신을 호출합니다.
def factorial(n):
if n <= 1:
return 1
return n * factorial(n-1)
print(factorial(5)) # 120
Python
복사
8. 람다 함수
간단한 익명 함수를 생성합니다.
람다(Lambda) 함수는 간단한 익명 함수를 생성하는 방식입니다. 주요 특징을 설명하면:
•
한 줄로 간단하게 함수를 정의할 수 있습니다
•
주로 일시적으로 사용할 간단한 함수가 필요할 때 활용됩니다
square = lambda x: x**2
numbers = [1, 2, 3, 4, 5]
squared = list(map(square, numbers))
Python
복사
위 코드에서 'lambda x: x**2'는 다음과 같은 일반 함수와 동일한 기능을 합니다:
def square(x):
return x**2
Python
복사
람다 함수는 특히 map(), filter(), reduce() 같은 함수형 프로그래밍에서 자주 사용되며, 함수를 매개변수로 전달해야 할 때 유용합니다.
9. 데코레이터 함수
함수의 기능을 수정하거나 확장하는 데코레이터입니다.
데코레이터는 함수를 감싸서 기능을 확장하거나 수정할 수 있게 해주는 파이썬의 강력한 기능입니다. 주요 특징은 다음과 같습니다:
•
기존 함수의 코드를 수정하지 않고도 새로운 기능을 추가할 수 있습니다
•
함수의 실행 시간 측정, 로깅, 권한 검사 등 다양한 용도로 활용됩니다
•
여러 데코레이터를 중첩해서 사용할 수 있습니다
데코레이터는 '@' 기호를 사용하여 적용하며, 다음과 같은 구조로도 표현할 수 있습니다
def timer_decorator(func):
def wrapper():
import time
start = time.time()
func()
end = time.time()
print(f"실행 시간: {end - start}초")
return wrapper
@timer_decorator
def slow_function():
import time
time.sleep(1)
Python
복사
데코레이터는 클래스 메소드나 속성에도 적용할 수 있으며, 매개변수를 받는 데코레이터를 만들 수도 있습니다.
10. 함수를 인자로 받는 함수
함수를 다른 함수의 인자로 전달하여 더 유연한 프로그래밍이 가능합니다. 이는 고차 함수(Higher-order function)의 한 예시입니다.
def apply(func, x):
"""
함수와 값을 받아서 함수를 실행하는 고차 함수
Args:
func: 실행할 함수
x: 함수에 전달할 인자
"""
return func(x)
# 예시 함수들
def double(x):
return x * 2
def square(x):
return x ** 2
# apply 함수 사용
print(apply(double, 5)) # 출력: 10
print(apply(square, 5)) # 출력: 25
Python
복사
이러한 방식은 특히 함수형 프로그래밍에서 자주 사용되며, 코드의 재사용성과 유연성을 높여줍니다.
11. kwargs
**kwargs(키워드 인자)는 함수에 이름이 지정된 인자를 딕셔너리 형태로 전달할 수 있게 해주는 특별한 매개변수입니다. 이를 통해 유연하고 확장 가능한 함수를 작성할 수 있습니다.
•
함수 정의시 매개변수 앞에 ** 를 붙여 사용합니다
•
호출할 때는 키워드=값 형태로 인자를 전달합니다
•
전달된 모든 키워드 인자는 딕셔너리로 변환되어 함수 내부에서 사용됩니다
•
인자의 개수에 제한이 없어 유연한 함수 설계가 가능합니다
def print_info(**kwargs):
"""
키워드 인자를 받아서 정보를 출력하는 함수
Args:
**kwargs: 키워드 인자들 (이름=값 형태)
"""
for key, value in kwargs.items():
print(f"{key}: {value}")
# 함수 사용 예시
print_info(name="으뜸이네", age=25, city="서울")
print_info(title="개발자", company="테크코리아")
Python
복사