[Python] 함수 (Function)
파이썬에서 함수는 재사용 가능한 코드 블록을 정의하여 프로그램을 구조화하고, 중복된 코드를 줄이는 데 사용됩니다. 함수는 입력값을 받아 처리하고, 결과를 반환하거나 특정 작업을 수행할 수 있습니다.
이 글에서는 파이썬 함수에 대한 다양한 사용법과 예제를 살펴보겠습니다.
함수의 정의와 호출
함수를 정의하려면 def
키워드를 사용하고, 함수 이름과 괄호 안에 매개변수를 지정합니다. 함수의 본문은 들여쓰기로 구분합니다. 함수를 호출하려면 함수 이름과 괄호를 사용합니다.
기본 함수 정의
def hello():
print("Hello, world!")
hello() # 출력: Hello, world!
위의 예제에서는 hello
라는 이름의 함수를 정의하고, print
문을 사용하여 “Hello, world!”를 출력합니다. 함수는 호출될 때만 실행됩니다.
매개변수가 있는 함수
함수에 매개변수를 정의하여 입력값을 받을 수 있습니다.
def hello(name):
print(f"Hello, {name}!")
hello("Lee") # 출력: Hello, Lee!
hello("Kim") # 출력: Hello, Kim!
이 예제에서는 name
매개변수를 가진 hello
함수를 정의하고, 함수 호출 시 이름을 전달하여 맞춤 인사를 출력합니다.
리턴값이 있는 함수
함수는 return
키워드를 사용하여 값을 반환할 수 있습니다. 반환된 값은 함수 호출 결과로 사용할 수 있습니다.
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 출력: 8
이 예제에서는 두 숫자의 합을 반환하는 add
함수를 정의하고, 결과를 출력합니다.
리턴값이 없는 함수
리턴값이 없는 함수는 값을 반환하지 않고 단순히 작업을 수행합니다.
def print_sum(a, b):
print(f"{a} + {b} = {a + b}")
print_sum(3, 5) # 출력: 3 + 5 = 8
이 예제에서는 print_sum
가 호출됐을 때 바로 결과를 출력합니다.
기본값을 가진 매개변수
함수의 매개변수에 기본값을 설정할 수 있습니다. 기본값이 설정된 매개변수는 함수 호출 시 값이 주어지지 않으면 기본값을 사용합니다.
def hello(name, greeting="Hello"):
print(f"{greeting}, {name}!")
hello("Lee") # 출력: Hello, Lee!
hello("Kim", "Good morning") # 출력: Good morning, Kim!
이 예제에서는 greeting
매개변수에 기본값 “Hello”를 설정하고, 함수 호출 시 다른 인사말을 전달할 수 있도록 합니다.
여러 개의 입력값을 받는 함수
함수에서 *args
를 사용하면 여러 개의 입력값을 받을 수 있습니다. *args
는 튜플로 처리됩니다.
def add_many(*args):
result = 0
for num in args:
result += num
return result
print(add_many(1, 2, 3)) # 출력: 6
print(add_many(1, 2, 3, 4, 5)) # 출력: 15
print(add_many(*[1, 2, 3, 4, 5])) # 출력: 15
이 예제에서는 add_many
함수가 여러 개의 입력값을 받아 합을 계산하여 반환합니다.
키워드 매개변수
함수에서 **kwargs
를 사용하면 키워드 매개변수를 받을 수 있습니다. **kwargs
는 딕셔너리로 처리됩니다.
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(name="Lee", age=30) # 출력: name: Lee
# age: 30
이 예제에서는 print_kwargs
함수가 키워드 매개변수를 받아 출력합니다.
혼합된 매개변수
함수에서 위치 매개변수, *args
, **kwargs
를 혼합하여 사용할 수 있습니다. 이때 **kwargs
는 반드시 마지막에 선언해야 합니다.
def mixed_args(a, b, *args, **kwargs):
print(f"a: {a}")
print(f"b: {b}")
print(f"args: {args}")
print(f"kwargs: {kwargs}")
mixed_args(1, 2, 3, 4, 5, key1="value1", key2="value2")
# 출력: a: 1
# b: 2
# args: (3, 4, 5)
# kwargs: {'key1': 'value1', 'key2': 'value2'}
이 예제에서는 mixed_args
함수가 위치 매개변수, 가변 인자, 키워드 매개변수를 모두 받아 출력합니다.
함수의 리턴값은 언제나 하나
함수는 항상 하나의 리턴값을 반환합니다. 여러 개의 값을 반환하는 경우 튜플로 반환됩니다.
def add_and_mul(a, b):
return a + b, a * b
result = add_and_mul(3, 4)
print(result) # 출력: (7, 12)
이 예제에서는 두 개의 값을 반환하는 add_and_mul
함수를 정의하고, 결과를 튜플로 출력합니다.
함수 안에서 함수 밖의 변수를 변경하는 방법
1. return 사용하기
함수 내부에서 변수를 변경하고 이를 반환하여 외부 변수에 다시 할당할 수 있습니다.
a = 1
def vartest(a):
a = a + 1
return a
a = vartest(a)
print(a) # 출력: 2
이 예제에서는 vartest
함수가 입력값을 변경하고 이를 반환하여 외부 변수 a
에 다시 할당합니다.
2. global 명령어 사용하기
함수 내부에서 전역 변수를 변경할 때 global
키워드를 사용할 수 있습니다.
a = 1
def vartest():
global a # 외부 전역변수 a를 사용
a = a + 1
vartest()
print(a) # 출력: 2
이 예제에서는 vartest
함수가 전역 변수 a
를 변경합니다.
lambda 예약어
lambda
예약어를 사용하면 간단한 함수를 한 줄로 작성할 수 있습니다.
# 정의 및 호출
print((lambda a, b: a + b)(3, 4)) # 출력: 7
# 함수 참조 변수
add = lambda a, b: a + b
print(add(3, 4)) # 출력: 7
이 예제에서는 람다 함수를 사용하여 두 숫자의 합을 계산합니다.
고차 함수
함수가 다른 함수의 인자로 전달되거나 반환값으로 사용될 수 있습니다.
# 문자열을 출력값(소문자)으로 생성시키는 함수를 인자로 전달
def toLowerText(s):
return s.lower()
# 출력값(소문자) 출력하는 고차 함수
def showText(f): # f는 함수변수
print(f("ABCD"))
def showText2(f, s): # f는 함수변수
print(f(s))
showText(toLowerText) # 출력: abcd
showText2(toLowerText, "ABCD") # 출력: abcd
showText2(lambda s: s.lower(), "ABCD") # 출력: abcd
이 글에서 고차 함수(high-order function)는 간략하게 예제만 보여주고 넘어가겠습니다. 추후에 다른 글에 상세하게 설명하겠습니다.
Leave a comment