Python TypeError:함수 개체는 첨자를 사용할 수 없습니다.

Salman Mehmood 2023년6월21일
  1. Python에서 Function Object TypeError 수정
  2. Python에서 빈 목록으로 Function Object TypeError 수정
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_NameEmployee_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']]
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