개요
파이썬에서 함수를 다룰 때 인자를 어떻게 전달하는지는 매우 중요한 부분이에요. 인자를 넘겨주는 방식, 즉 인자 규약(Argument Conventions)을 제대로 이해하면 코드를 더 유연하고 깔끔하게 작성할 수 있고, 가독성과 확장성까지 높일 수 있죠. 오늘은 파이썬의 핵심 인자 규약 4가지를 총정리해 볼게요.
위치 인자(Positional Arguments)
위치 인자는 함수를 호출할 때 인자의 순서에 따라 값이 전달되는 가장 기본적인 방식입니다. 함수를 정의할 때 선언한 매개변수의 순서와 호출할 때 전달하는 인자의 순서가 일치해야 합니다.
아래 처럼 순서를 바꾸면 다른 결과가 나오니 주의해야합니다.
def greet(name, age):
print(f"안녕하세요, {name}님! 나이는 {age}살입니다.")
# 위치 인자를 사용한 함수 호출
greet("철수", 20)
# 출력: 안녕하세요, 철수님! 나이는 20살입니다.
# 순서를 바꾸면 의도와 다른 결과가 나옵니다.
greet(20, "철수")
# 출력: 안녕하세요, 20님! 나이는 철수살입니다.
키워드 인자(Keyword Arguments)
키워드 인자는 매개 변수의 이름(키워드)을 명시하여 값을 전달하는 방식입니다. 이 방식은 인자의 순서에 구애 받지 않고 원하는 매개 변수에 값을 정확히 전달할 수 있다는 장점이 있습니다.
아래 코드처럼 매개 변수 이름을 지정하면 순서와 상관 없이 올바른 값이 전달됩니다. 이렇게하면 코드의 가독성이 좋아지고, 인자의 의미를 쉽게 파악할 수 있습니다.
def greet(name, age):
print(f"안녕하세요, {name}님! 나이는 {age}살입니다.")
# 키워드 인자를 사용한 함수 호출
greet(age=25, name="영희")
# 출력: 안녕하세요, 영희님! 나이는 25살입니다.
기본값 인자(Default Arguments)
기본값 인자는 매개 변수에 기본값을 미리 지정해 놓은 방식입니다. 함수 호출 시 해당 인자의 값이 전달되지 않으면, 미리 설정해 둔 기본 값이 사용됩니다.
아래와 같이 하면 모든 인자를 다 전달하지 않아도 함수를 호출할 수 있어 편리하고 자주 사용하는 값들을 기본 값으로 설정해 효율성을 높일 수 있습니다.
def greet(name, age=18):
print(f"{name}은 {age}살입니다.")
# age 인자를 전달하지 않으면 기본값 18이 사용됨
greet("민수")
# 출력: 민수은 18살입니다.
# age 인자를 전달하면 기본값 대신 전달된 값이 사용됨
greet("지수", 22)
# 출력: 지수은 22살입니다.
가변 인자(Variable-Length Arguments)
때로는 함수에 몇 개의 인자가 전달될지 미리 알 수 없는 경우가 있습니다. 이때 가변 인자를 사용하면 함수가 여러개의 인자를 유연하게 받을 수 있습니다. 가변 인자는 크게 두가지로 나뉩니다.
*args(가변 위치 인자)
*args는 여러 개의 위치 인자를 튜플 형태로 묶어서 받습니다. 매개 변수 앞에 *를 붙여 사용하며, args는 관례적인 이름입니다.
add_all(1,2,3)을 호출하면 numbers는 (1,2,3)이라는 튜플이 되고, sum()함수로 모든 함수를 더할 수 있습니다.
def add_all(*numbers):
return sum(numbers)
print(add_all(1, 2, 3))
# 출력: 6
print(add_all(10, 20, 30, 40, 50))
# 출력: 150
**kwargs(가변 키워드 인자)
**kwargs는 여러 개의 키워드 인자를 딕셔너리 형태로 묶어서 받습니다. 매개변수 앞에 **를 붙여 사용하며, kwargs도 관례적인 이름입니다.
show_info() 함수를 호출하면 전달된 키워드 인자들이 info라는 딕셔너리에 담겨 편리하게 처리할 수 있습니다.
def show_info(**info):
print("info:", info)
show_info(name="void", age=20, city="seoul")
# 출력: info: {'name': 'void', 'age': 20, 'city': 'seoul'}
show_info(book="Python", author="Guido")
# 출력: info: {'book': 'Python', 'author': 'Guido'}
'Dev > Python' 카테고리의 다른 글
[Python] Python 예외 처리 (0) | 2025.09.26 |
---|---|
[Python] 함수 시그니처 (0) | 2025.09.24 |
[Python] 모듈(Module) & 패키지(Package) (0) | 2025.09.23 |
[Python] 타입 힌트 (0) | 2025.09.22 |
[Python] 파이썬 디스크립터, __get__ , __set__ 은 공개(Public) 메서드일까? (0) | 2025.09.20 |