파이썬 'TypeError: 'int' object is not callable' 오류란?
파이썬에서 ‘TypeError: 'int' object is not callable’ 오류는 주로 int
타입 객체를 함수처럼 호출하려 할 때 발생합니다. 이 오류는 흔히 변수 이름과 함수 이름이 겹쳐서 발생하는 경우가 많습니다. 파이썬에서는 함수나 객체를 호출할 때 괄호(()
)를 사용하는데, int
와 같은 숫자 객체를 호출하려 할 때 발생하는 문제입니다. 이 글에서는 ‘TypeError: 'int' object is not callable’ 오류의 원인과 해결 방법에 대해 설명합니다.
‘TypeError: 'int' object is not callable’ 오류의 원인
이 오류는 주로 두 가지 원인으로 발생합니다:
- 변수 이름과 함수 이름이 겹침: 함수 이름이나 내장 함수 이름을 변수로 덮어쓸 때 발생할 수 있습니다. 예를 들어, 내장 함수
sum()
을 변수로 덮어쓰면sum()
을 더 이상 함수처럼 호출할 수 없게 됩니다. - 숫자 객체를 함수처럼 호출: 숫자형 객체(
int
,float
)를 괄호를 사용해 함수처럼 호출하려 할 때 발생합니다. 파이썬은 숫자 객체를 함수로 취급하지 않기 때문에 이 오류가 발생합니다.
‘TypeError: 'int' object is not callable’ 오류 해결 방법
이 오류를 해결하려면, 주로 변수 이름을 함수 이름과 겹치지 않도록 하거나 숫자 객체를 함수처럼 호출하지 않도록 해야 합니다. 아래에 몇 가지 해결 방법을 소개합니다.
1. 변수 이름과 내장 함수 이름이 겹치지 않도록 하기
파이썬 내장 함수와 변수 이름이 겹치지 않도록 주의해야 합니다. 예를 들어, sum
, min
, max
등의 내장 함수 이름을 변수로 덮어쓰면, 해당 함수들을 더 이상 호출할 수 없게 됩니다.
# 오류 발생 예시 sum = 10 # sum 함수가 아닌 변수로 덮어씀 result = sum([1, 2, 3]) # TypeError 발생 # 해결 방법 total = 10 # 변수 이름을 바꿔서 해결 result = sum([1, 2, 3]) # 정상적으로 함수 호출 print(result)
위 코드에서는 sum
이라는 내장 함수 이름을 변수로 덮어쓴 후 함수 호출을 시도했기 때문에 오류가 발생합니다. 이를 해결하려면 변수 이름을 다른 이름으로 변경하고, 함수 호출을 정상적으로 수행하면 됩니다.
2. 숫자 객체를 함수처럼 호출하지 않기
숫자 객체를 함수처럼 호출하려고 할 때도 이 오류가 발생합니다. 예를 들어, int
객체나 float
객체를 괄호로 호출하려고 하면 파이썬은 숫자 객체를 함수처럼 처리하지 않기 때문에 오류가 발생합니다. 이 문제는 숫자 객체를 함수처럼 호출하지 않도록 코드에서 잘못된 부분을 수정하면 해결됩니다.
# 오류 발생 예시 my_num = 10 result = my_num() # TypeError 발생, 숫자는 함수가 아님 # 해결 방법 my_num = 10 result = my_num + 5 # 함수 호출이 아닌 연산으로 해결 print(result)
위 코드에서 my_num()
을 호출하려 했기 때문에 오류가 발생했습니다. 숫자는 함수처럼 호출할 수 없으므로, 연산을 수행하는 방식으로 수정하여 오류를 해결할 수 있습니다.
3. 숫자 객체와 함수가 혼동되지 않도록 변수 사용하기
변수와 함수 이름을 명확히 구분하여 사용하면 이 오류를 예방할 수 있습니다. 숫자 객체는 함수처럼 호출되지 않도록 명확한 변수명을 사용하고, 변수와 함수 이름이 겹치지 않도록 주의해야 합니다.
# 잘못된 예 int = 5 # 내장 함수 int를 변수로 덮어씀 result = int("123") # TypeError 발생, int() 함수 호출 불가 # 해결 방법 my_int = 5 # 변수 이름을 변경하여 해결 result = int("123") # 내장 함수 int 호출 print(result)
위 코드에서는 내장 함수 int()
를 변수로 덮어쓴 후, 다시 함수로 호출하려 했기 때문에 오류가 발생했습니다. 변수 이름을 my_int
와 같이 변경하여 내장 함수와 이름이 겹치지 않도록 해결할 수 있습니다.
‘TypeError: 'int' object is not callable’ 오류 예방을 위한 팁
‘TypeError: 'int' object is not callable’ 오류를 예방하려면 다음과 같은 방법들을 고려해보세요:
- 내장 함수와 변수 이름이 겹치지 않도록 주의하세요.
- 숫자 객체를 함수처럼 호출하지 않도록 연산과 호출을 구분하세요.
- 변수 이름은 명확하게 지정하여 내장 함수와 혼동되지 않도록 하세요.
- 코드를 작성할 때 변수와 함수 이름을 구분하여 가독성을 높이세요.
결론
‘TypeError: 'int' object is not callable’ 오류는 변수 이름과 함수 이름이 겹치거나 숫자 객체를 함수처럼 호출할 때 발생하는 오류입니다. 이 오류를 해결하려면 변수 이름을 내장 함수 이름과 겹치지 않도록 변경하고, 숫자 객체를 함수처럼 호출하지 않도록 주의해야 합니다. 이를 통해 오류를 예방하고, 보다 안전하고 오류가 적은 코드를 작성할 수 있습니다.