본문 바로가기

IT/Python

Python 프로그래밍: 함수 위치 인수와 키워드 인수 사용하기

1. 위치 인수와 키워드 인수란?

Python에서 함수를 호출할 때, 인수를 어떻게 전달하느냐에 따라 위치 인수와 키워드 인수로 나뉩니다.

● 위치 인수(positional argument)는 인수를 순서대로 넣어 함수를 호출하는 방식입니다.

● 키워드 인수(keyword argument)는 인수를 이름으로 지정하여 함수를 호출하는 방식입니다.

두 가지 방식을 이해하는 것은 함수의 인터페이스를 정의하고, 함수를 사용하는 방법에 대해 깊이 이해하는데 도움이 됩니다.

 

2. 위치 인수의 사용법

우선 위치 인수의 사용법에 대해 알아보겠습니다. Python의 함수는 기본적으로 위치 인수를 사용합니다. 예를 들어, 다음과 같이 두 개의 숫자를 더하는 함수를 만들 수 있습니다.

def add(a, b):
    return a + b

result = add(1, 2) # 위치 인수를 사용하여 함수 호출
print(result) # 출력: 3

 

위 예시에서 `add(1, 2)`에서 `1`과 `2`가 위치 인수입니다. 인수 `1`은 첫 번째 매개변수 `a`에, `2`는 두 번째 매개변수 `b`에 매핑됩니다.

 

3. 키워드 인수의 사용법

이번에는 키워드 인수의 사용법에 대해 알아보겠습니다. 키워드 인수는 인수 앞에 매개변수의 이름을 붙여 함수를 호출하는 방식입니다. 예를 들어, 위의 `add` 함수를 키워드 인수를 사용하여 호출해볼 수 있습니다.

def add(a, b):
    return a + b

result = add(a=1, b=2) # 키워드 인수를 사용하여 함수 호출
print(result) # 출력: 3

 

위 예시에서 `add(a=1, b=2)`에서 `a=1`과 `b=2`가 키워드 인수입니다. `a`와 `b`는 매개변수의 이름이며, 각각에 해당하는 값은 `=` 뒤에 오는 값입니다.

 

4. 위치 인수와 키워드 인수 함께 사용하기

위치 인수와 키워드 인수는 동시에 사용할 수 있습니다. 다만, 함수를 호출할 때 위치 인수가 먼저 와야하며, 그 뒤에 키워드 인수가 와야합니다. 즉, 함수를 호출하는 구문 내에서 위치 인수가 키워드 인수보다 뒤에 오면 Python은 오류를 발생시킵니다.

def add(a, b, c):
    return a + b + c

result = add(1, c=3, b=2) # 위치 인수와 키워드 인수를 함께 사용
print(result) # 출력: 6

 

위 예시에서 `add(1, c=3, b=2)`에서 `1`은 위치 인수, `c=3`과 `b=2`는 키워드 인수입니다. 위치 인수 `1`은 첫 번째 매개변수 `a`에 매핑되고, 키워드 인수 `c=3`과 `b=2`는 각각 매개변수 `c`, `b`에 매핑됩니다.

 

5. 가변 인수 함수 만들기

Python에서는 위치 인수를 임의의 개수만큼 받을 수 있는 가변 인수 함수를 정의할 수 있습니다. 가변 인수는 함수를 정의할 때 매개변수 앞에 `*`를 붙여 표시합니다. 이렇게 하면, 그 함수는 위치 인수를 임의의 개수만큼 받을 수 있습니다.

def add(*args):
    result = 0
    for arg in args:
        result += arg
    return result

print(add(1, 2, 3)) # 출력: 6
print(add(1, 2, 3, 4, 5)) # 출력: 15

 

위 예시에서 `add` 함수는 임의의 개수의 위치 인수를 받을 수 있습니다. `add(1, 2, 3)`나 `add(1, 2, 3, 4, 5)`와 같이 함수를 호출하면, 각 위치 인수는 `args` 튜플의 원소로 들어갑니다.

 

6. 가변 키워드 인수 함수 만들기

마찬가지로, Python에서는 키워드 인수를 임의의 개수만큼 받을 수 있는 가변 키워드 인수 함수를 정의할 수 있습니다. 가변 키워드 인수는 함수를 정의할 때 매개변수 앞에 `**`를 붙여 표시합니다. 이렇게 하면, 그 함수는 키워드 인수를 임의의 개수만큼 받을 수 있습니다.

def print_kwargs(**kwargs):
    for key, value in kwargs.items():
        print(f'{key} = {value}')

print_kwargs(a=1, b=2, c=3)

 

위 예시에서 `print_kwargs(a=1, b=2, c=3)`를 호출하면, 각 키워드 인수는 `kwargs` 딕셔너리의 원소로 들어갑니다. 그래서 `print_kwargs` 함수 내부에서는 `kwargs.items()`를 통해 딕셔너리의 키-값 쌍을 순회할 수 있습니다.

 

7. 결론

이번 포스팅에서는 Python의 위치 인수와 키워드 인수, 그리고 가변 인수 함수와 가변 키워드 인수 함수에 대해 알아보았습니다. 

 

위치 인수와 키워드 인수의 사용은 함수를 호출하는 방식을 더욱 유연하게 만들어 줍니다. 가변 인수와 가변 키워드 인수는 함수를 정의하는 방식을 더욱 유연하게 만들어 줍니다. 이러한 유연성은 Python 프로그래밍의 큰 장점 중 하나입니다.