Python TypeError:함수 개체는 첨자를 사용할 수 없습니다.
이 기사에서는 TypeError: 'function' object is not subscriptable
오류가 발생하는 이유와 Python에서 이 오류를 수정하는 방법에 대해 설명합니다.
Python에서 Function Object TypeError 수정
프로그래밍 초보자인 경우 프로그램 실행 시 오류가 발생할 수 있습니다. 때때로 이 오류를 수정하려고 시도하지만 실행 중에 이 오류가 발생하는 이유를 이해하려고 하지 않기 때문에 어렵습니다.
예를 들어 직원 목록이 있고 나중에 클래스 또는 모듈 내에서 재사용하기 위해 함수 내에서 래핑하려고 한다고 가정합니다. 이 함수를 호출하면 TypeError: 'function' object is not subscriptable
이라는 오류가 발생합니다.
예제 코드:
Employee_Name = ["Max", "Harry", "Ben", "Simon", "Thomas"]
def Employee_Name(n):
for i in range(5):
print(n[i])
Employee_Name(Employee_Name)
출력:
TypeError: 'function' object is not subscriptable
위의 Python 스크립트에서 항목 목록을 반복하고 있으며 목록 대신 함수 내부에 함수를 전달하기 때문에 오류가 발생합니다.
n
변수에는 함수가 포함되어 있으며 루프 내부에서 n
변수의 인덱스에 액세스하려고 하면 첨자 또는 반복 가능하지 않은 개체에서 인덱스에 액세스할 수 없기 때문에 오류가 발생합니다.
초보자는 이를 수정하는 경향이 있지만 다른 사용자는 다음 출력과 같이 다른 오류가 발생할 수 있습니다.
예제 코드:
def Employee_Name(n):
for i in range(5):
print(n[i])
Employee_Name = ["Max", "Harry", "Ben", "Simon", "Thomas"]
Employee_Name(Employee_Name)
출력:
TypeError: 'list' object is not callable
함수와 리스트의 이름이 같더라도 함수를 정의한 후 리스트를 선언하면 오류를 고칠 수 있다고 생각한다. 코드를 실행한 후 사용자에게 또 다른 오류가 발생합니다.
그 이유는 변수 선언 시 Employee_Name
함수 이름이 목록인 변수로 오버라이드되어 목록을 호출할 수 없기 때문입니다. 간단한 해결책은 함수에 사용한 다른 개체와 동일한 이름을 사용하지 않는 것입니다.
예제 코드:
def Employee_Name(n):
for i in range(5):
print(n[i])
Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]
Employee_Name(Employee_Names)
변수 이름 Employee_Name
을 Employee_Names
로 변경했습니다.
출력:
Max
Harry
Ben
Simon
Thomas
Python에서 빈 목록으로 Function Object TypeError 수정
또 다른 이유는 어떤 이유로든 리스트의 빈 리스트를 만들려고 할 때 TypeError: 'function' object is not subscriptable
을 얻는 것입니다. 예를 들어 보겠습니다.
예제 코드:
Empty_List = []
def Employee_Name(n):
for i in range(5):
Empty_List.append(n[i])
return Empty_List
Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]
print(Employee_Name[Employee_Names])
출력:
TypeError: 'function' object is not subscriptable
함수를 호출할 때 함수 이름에 열고 닫는 함수 괄호((function)
)를 넣어야 합니다. 대괄호를 사용하여 호출하는 함수의 동작에 반대하는 대괄호([function]
)를 넣었다고 가정합니다.
일부 사용자는 목록의 목록을 원하기 때문에 또 다른 실수를 합니다. 여는 괄호와 닫는 괄호 안의 문제를 수정하려고 하면 대괄호 안에 있는 목록을 전달하고 또 다른 오류가 발생합니다.
오류 예:
Empty_List = []
def Employee_Name(n):
for i in range(5):
Empty_List.append(n[i])
return Empty_List
Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]
print(Employee_Name([Employee_Names]))
출력:
IndexError: list index out of range
이 오류가 발생하는 한 가지 이유는 1
길이의 목록 목록을 전달하고 for
루프 내에서 반복할 때 해당 인덱스가 범위를 벗어나기 때문입니다. 간단한 해결책은 함수([Employee_Names]
) 내에서 대괄호를 사용하는 대신 반환할 Empty_List
변수 내에 대괄호를 넣어야 합니다.
예제 코드:
Empty_List = []
def Employee_Name(n):
for i in range(5):
Empty_List.append(n[i])
return [Empty_List]
Employee_Names = ["Max", "Harry", "Ben", "Simon", "Thomas"]
print(Employee_Name(Employee_Names))
출력:
[['Max', 'Harry', 'Ben', 'Simon', 'Thomas']]
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
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.