파이썬에서 함수(Function) 를 정의할 때, 인수를 전달하는 방식에는 여러 가지가 있습니다.
그중에서도 위치 인수(Positional Arguments) 와 키워드 인수(Keyword Arguments) 는 가장 기본적인 개념입니다.
이번 글에서는 위치 인수와 키워드 인수의 차이점과 함수를 효과적으로 활용하는 방법을 알아보겠습니다.
위치 인수(Positional Arguments)란?
위치 인수는 순서대로 전달되는 인수를 의미합니다.
즉, 함수의 매개변수(parameter) 순서에 따라 값이 대입됩니다.
def greet(name, age):
print(f"안녕하세요, 저는 {name}이고, {age}살입니다.")
greet("철수", 25)
✅ 실행 결과
안녕하세요, 저는 철수이고, 25살입니다.
🔹 "철수"는 name에, 25는 age에 자동으로 매핑됨.
🔹 인수 순서가 중요하므로 순서를 잘 맞춰야 합니다.
❌ 잘못된 예시
greet(25, "철수") # 잘못된 순서
안녕하세요, 저는 25이고, 철수살입니다.
✅ 잘못된 결과가 출력되므로 위치 인수 사용 시 순서를 주의해야 합니다.
키워드 인수(Keyword Arguments)란?
키워드 인수는 인수의 이름을 명시하여 전달하는 방식입니다.
이렇게 하면 순서를 바꿔도 올바른 매개변수에 값이 전달됩니다.
greet(age=25, name="철수")
✅ 실행 결과
안녕하세요, 저는 철수이고, 25살입니다.
🔹 name="철수", age=25처럼 매개변수명을 직접 지정하면 순서를 바꿔도 정상적으로 동작합니다.
🔹 키워드 인수를 사용하면 코드 가독성이 좋아지고, 실수를 줄일 수 있습니다.
위치 인수와 키워드 인수 혼합 사용 방법
위치 인수와 키워드 인수를 함께 사용할 수도 있습니다.
이때, 위치 인수는 항상 키워드 인수보다 먼저 와야 합니다.
✅ 올바른 예제
greet("철수", age=25)
❌ 잘못된 예제 (키워드 인수가 먼저 올 수 없음)
greet(name="철수", 25) # SyntaxError 발생
SyntaxError: positional argument follows keyword argument
🔹 위치 인수가 항상 먼저 와야 하며, 그 뒤에 키워드 인수를 사용해야 합니다.
기본값을 가진 매개변수 (Default Arguments)
함수를 정의할 때, 특정 매개변수에 기본값(default value) 을 설정할 수도 있습니다.
def greet(name="홍길동", age=20):
print(f"안녕하세요, 저는 {name}이고, {age}살입니다.")
greet() # 인수를 전달하지 않음
greet("영희") # name만 전달
greet(age=30) # age만 전달
✅ 실행 결과
안녕하세요, 저는 홍길동이고, 20살입니다.
안녕하세요, 저는 영희이고, 20살입니다.
안녕하세요, 저는 홍길동이고, 30살입니다.
🔹 매개변수에 기본값이 설정되어 있으면 인수를 생략할 수 있음.
🔹 기본값이 있는 매개변수는 기본값이 없는 매개변수보다 뒤에 와야 함.
❌ 잘못된 예제
def greet(name="홍길동", age): # 기본값이 있는 매개변수가 먼저 오면 오류 발생
print(f"안녕하세요, 저는 {name}이고, {age}살입니다.")
SyntaxError: non-default argument follows default argument
✅ 기본값이 없는 인수는 먼저, 기본값이 있는 인수는 뒤에 배치해야 합니다.
가변 위치 인수 (args) 사용하기
함수에 전달할 인수 개수가 정해져 있지 않을 경우,
*args를 사용하면 여러 개의 위치 인수를 받을 수 있습니다.
def print_numbers(*args):
for num in args:
print(num, end=" ")
print_numbers(1, 2, 3, 4, 5)
✅ 실행 결과
1 2 3 4 5
🔹 *args는 여러 개의 값을 튜플(tuple) 형태로 받아옵니다.
🔹 이를 활용하면 인수 개수를 유동적으로 조절할 수 있습니다.
가변 키워드 인수 (kwargs) 사용하기
**kwargs를 사용하면 여러 개의 키워드 인수를 받을 수 있습니다.
def user_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
user_info(name="철수", age=25, job="개발자")
✅ 실행 결과
name: 철수
age: 25
job: 개발자
🔹 **kwargs는 여러 개의 키워드 인수를 딕셔너리(dictionary) 형태로 받아옵니다.
🔹 이를 활용하면 유연한 함수 설계가 가능합니다.
위치 인수, 키워드 인수, *args, kwargs 함께 사용하기
모든 방식의 인수를 함께 사용할 수도 있습니다.
이때, 순서에 주의해야 합니다.
def example(a, b, *args, c=10, **kwargs):
print(f"a: {a}, b: {b}")
print(f"args: {args}")
print(f"c: {c}")
print(f"kwargs: {kwargs}")
example(1, 2, 3, 4, 5, c=20, d=30, e=40)
✅ 실행 결과
a: 1, b: 2
args: (3, 4, 5)
c: 20
kwargs: {'d': 30, 'e': 40}
🔹 매개변수 순서
1. 위치 인수 (a, b)
2. 가변 위치 인수 (*args)
3. 키워드 인수 (c=10)
4. 가변 키워드 인수 (**kwargs)
❌ 잘못된 순서
def example(*args, a, b): # 가변 위치 인수가 먼저 오면 안 됨
pass
SyntaxError: non-default argument follows *args
✅ 위치 인수는 항상 먼저 와야 합니다.
정리 및 마무리
✅ 위치 인수는 순서대로 전달되는 인수
✅ 키워드 인수는 매개변수명을 지정하여 전달하는 인수
✅ 기본값을 가진 인수는 생략 가능하지만, 반드시 기본값이 없는 인수 뒤에 위치해야 함
✅ *가변 위치 인수 (args) 는 여러 개의 위치 인수를 받을 수 있음
✅ **가변 키워드 인수 (kwargs) 는 여러 개의 키워드 인수를 받을 수 있음
✅ 위치 인수 → *args → 키워드 인수 → **kwargs 순서로 정의해야 함
이제 위치 인수와 키워드 인수를 활용해 더 유연한 함수를 만들어 보세요!
#파이썬 #Python #함수 #프로그래밍 #코딩기초 #파이썬공부 #개발자 #PythonTips #코딩학습 #Python3
파이썬 배우기: 재귀 함수 활용하기 (0) | 2025.02.27 |
---|---|
파이썬 배우기: 익명 함수(lambda 함수) (0) | 2025.02.26 |
파이썬 배우기: 예외 처리(try-except) 하는 방법 (0) | 2025.02.19 |
파이썬 배우기: 파일 입출력 알아보기 (0) | 2025.02.18 |
파이썬 배우기: 딕셔너리(Dictionary)와 세트(Set) 활용하기 (0) | 2025.02.17 |