Python 오류: 개체를 호출할 수 없습니다.

Salman Mehmood 2023년6월21일
  1. Python 오류 수정 객체를 호출할 수 없습니다
  2. Python의 callable() 함수
Python 오류: 개체를 호출할 수 없습니다.

개체를 호출할 수 없습니다 유형 오류에 대해 논의하고 이를 수정하는 방법을 알아봅니다. 또한 객체가 Python에서 호출 가능한지 여부를 확인하기 위해 호출 가능한 함수를 활용하는 방법에 대해서도 설명합니다.

Python 오류 수정 객체를 호출할 수 없습니다

이 오류(object is not callable)를 볼 때 아마도 Python 스크립트 내에서 무슨 일이 일어나고 있는지 이해해야 할 것입니다. 예를 들어 문제와 해결 방법을 보여주는 몇 줄의 코드가 있습니다.

에러 코드:

v = 5
g = 9
int = 3

print(int(g / v * int))

출력:

TypeError: 'int' object is not callable

세 개의 변수 v, g,int가 있습니다. 함수인 int라는 변수를 정의했기 때문에 이 문제가 발생합니다.

int는 Python 내장 함수이므로 int를 변수 이름으로 사용할 수 없습니다. 따라서 Python 스크립트가 실행될 때 변수 이름 int를 호출하려고 합니다. int는 Python 내에서 제한되는 이름이므로 변수로 사용할 때 이 오류가 표시됩니다.

변수 이름을 변경하고 이 스크립트를 다시 실행하여 오류를 수정했습니다.

고정 코드:

v = 5
g = 9
d = 3

print(int(g / v * d))

출력:

5

Python 스크립트 내부에 함수가 있는 프로그램을 실행할 때 동일한 문제에 직면하게 되므로 해당 함수를 변수 이름으로 지정해서는 안 됩니다. 문자열, 부동 소수점 등에서도 동일한 문제가 발생합니다.

이 오류가 발생하면 먼저 변수가 함수 이름을 호출하는지 여부를 확인해야 합니다. 다음 코드 예제와 같이 데이터 유형 값을 저장하는 변수를 호출할 수 없습니다.

에러 코드:

x = "josh"
x()

출력:

TypeError: 'str' object is not callable

Python의 callable() 함수

개체를 함수처럼 호출할 수 있는 경우 callable() 함수는 True를 반환하고 모든 개체가 될 수 있는 하나의 매개 변수를 허용합니다.

예를 들어 x42인 변수가 있는 경우 이 변수는 메모리의 정수를 나타냅니다. xcallable() 함수에 전달하고 결과를 즉시 인쇄하여 true 또는 false 값을 반환하는지 확인할 수 있습니다.

이것을 실행할 때 반환 값은 42 정수를 호출할 수 없기 때문에 false입니다.

예제 코드:

x = 42
print(callable(x))

출력:

False

callable() 함수가 자신을 호출하면 어떤 일이 발생하는지 확인해 봅시다. callable() 함수 안에 callable을 입력하고 이를 인쇄합니다. 결과가 True인 것을 볼 수 있으며 분명히 호출 가능한 print 함수를 전달할 수도 있습니다.

print(callable(callable))
print(callable(print))

출력:

True
True

호출 가능 여부에 관계없이 내장 객체가 아닌 사용자 정의 객체를 정의한다고 가정합니다. 무언가를 반환하는 FUNC()라는 함수를 만들어 봅시다.

우리는 이 함수 이름을 callable() 함수에 전달하고 출력을 인쇄하며 이것은 호출 가능합니다. FUNC()를 사용하여 반환 값을 호출하면 정수가 되어 callable() 함수에 전달됩니다. 출력은 False를 반환할 것이며 이는 우리가 이미 보고 있는 정수를 호출할 수 없기 때문에 호출할 수 없습니다.

예:

def FUNC():
    return 51


print(callable(FUNC))
print(callable(FUNC()))

출력:

True
False
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Python Error