파이썬 함수 호출 인수 오류 (Python Function Call Argument Error)
파이썬은 높은 수준의 언어이기 때문에 간단한 문법만으로도 많은 일을 할 수 있습니다. 하지만 파이썬을 사용하다 보면 함수 호출 시 인수 오류가 발생하는 경우가 있습니다. 이번 포스팅에서는 파이썬 함수 호출 인수 오류의 원인과 해결 방법에 대해 알아보겠습니다.
- 함수 호출 인수 오류란?
함수 호출 인수 오류란 함수가 호출될 때 인수(매개변수)의 개수, 형태가 일치하지 않아 발생하는 오류입니다. 파이썬에서 함수를 호출할 때는 함수 이름 다음에 괄호를 사용하여 인수를 전달합니다. 예를 들어 다음과 같은 함수가 있다고 가정해 봅시다.
python
def add(a, b):
return a + b
위 함수는 두 개의 인수를 받아서 더한 후 그 결과를 반환합니다. 따라서 함수를 호출하려면 add 함수의 인수로 두 개의 숫자를 전달해야 합니다. 다음과 같이 호출하는 것이 올바른 방법입니다.
“`python
add(2, 3)
5
“`
하지만 함수를 호출할 때 전달하는 인수가 함수의 매개변수와 일치하지 않으면 함수 호출 인수 오류가 발생합니다.
-
함수 호출 인수 오류의 종류
파이썬에서는 함수 호출 인수 오류가 다양한 형태로 발생할 수 있습니다. 함수 호출 인수 오류의 종류와 예시를 살펴보겠습니다.1) TypeError: add() takes 2 positional arguments but 3 were given
– 인수의 개수가 맞지 않을 때 발생하는 오류입니다.
“`python
add(1, 2, 3)
Traceback (most recent call last):
File ““, line 1, in
TypeError: add() takes 2 positional arguments but 3 were given
“`
2) TypeError: add() missing 1 required positional argument: 'b'
- 인수의 개수가 모자라는 경우 발생하는 오류입니다.
“`python
add(1)
Traceback (most recent call last):
File ““, line 1, in
TypeError: add() missing 1 required positional argument: ‘b’
“`
3) TypeError: add() got an unexpected keyword argument 'c'
- 함수에서 정의되지 않은 인수를 전달했을 때 발생하는 오류입니다.
“`python
add(a=2, b=3, c=4)
Traceback (most recent call last):
File ““, line 1, in
TypeError: add() got an unexpected keyword argument ‘c’
“`
4) TypeError: add() takes from 2 to 3 positional arguments but 4 were given
- 함수가 **args 를 이용해 가변 인자를 받는 경우, 인자의 개수가 맞지 않으면 발생하는 오류입니다.
“`python
def add(*args):
result = 0
for arg in args:
result += arg
return result
add(1, 2, 3, 4)
TypeError: add() takes from 2 to 3 positional arguments but 4 were given
“`
5) TypeError: add() takes 2 positional arguments but 4 were given
- 함수가 **kwargs 를 이용해 키워드 인자를 받는 경우, 인자의 개수가 맞지 않으면 발생하는 오류입니다.
“`python
def add(**kwargs):
result = 0
for key in kwargs:
result += kwargs[key]
return result
add(a=1, b=2, c=3, d=4)
TypeError: add() takes 2 positional arguments but 4 were given
“`
-
함수 호출 인수 오류 해결 방법
함수 호출 인수 오류를 해결하는 방법은 간단합니다. 올바른 인수를 전달하면 됩니다. 하지만 오류의 종류에 따라서 오류를 해결하기 위한 방법이 다르기 때문에 각각의 오류에 따라서 해결 방법을 살펴보겠습니다.1) 인수의 개수가 맞지 않을 때
인수의 개수가 맞지 않을 때는 함수를 호출할 때 전달하는 인수의 개수를 맞추면 됩니다. 예를 들어 add 함수에 인수를 두 개만 전달하면 됩니다.
“`python
add(1, 2)
3
“`
2) 인수가 모자라는 경우
인수가 모자라면 함수를 호출할 때 모자란 인수를 전달하면 됩니다. 예를 들어 add 함수에 인수를 하나만 전달하면 됩니다.
“`python
add(1)
Traceback (most recent call last):
File ““, line 1, in
TypeError: add() missing 1 required positional argument: ‘b’
“`
3) 함수에서 정의되지 않은 인수를 전달한 경우
함수에서 정의되지 않은 인수를 전달하면 함수를 호출할 때 해당 인수를 제거하거나 함수에서 해당 인수를 받아들일 수 있도록 코드를 수정해야 합니다.
“`python
add(a=2, b=3)
5
“`
4) 가변 인자를 받는 함수에서 인자의 개수가 맞지 않는 경우
가변 인자를 받는 함수에서 인자의 개수가 맞지 않으면 인자를 맞춰서 전달하면 됩니다.
“`python
add(1, 2, 3)
6
“`
5) 키워드 인자를 받는 함수에서 인자의 개수가 맞지 않는 경우
키워드 인자를 받는 함수에서 인자의 개수가 맞지 않으면 함수에서 키워드 인자를 이용해 값을 받는 코드를 수정해야 합니다.
“`python
add(a=1, b=2)
3
“`
- 결론
파이썬에서 함수 호출 인수 오류는 함수를 호출할 때 전달하는 인수의 개수, 형태가 일치하지 않을 때 발생합니다. 함수 호출 인수 오류를 해결하기 위해서는 함수를 호출할 때 전달하는 인수를 올바르게 맞춰야 합니다. 인수의 개수가 맞지 않는 경우, 인수가 모자라는 경우, 함수에서 정의되지 않은 인수를 전달한 경우, 가변 인자를 받는 함수에서 인자의 개수가 맞지 않는 경우, 키워드 인자를 받는 함수에서 인자의 개수가 맞지 않는 경우에 따라서 각각의 해결 방법이 다릅니다. 따라서 함수를 호출할 때 전달하는 인수에 대해서는 주의해서 사용해야 합니다.