programing

NameError: 이름 'List'가 정의되지 않았습니다.

oldcodes 2023. 5. 24. 22:21
반응형

NameError: 이름 'List'가 정의되지 않았습니다.

나는 왜 이것이 작동하지 않는지 정말로 확신할 수 없습니다.여기 코드의 중요한 부분이 있습니다(릿코드 챌린지에서 온 것입니다).첫 번째 줄은 NameError를 던집니다.

def totalFruit(self, tree: List[int]) -> int:
    pass

가져오기를 시도하는 경우List먼저 오류가 발생합니다.No module named 'List'아나콘다의 파이썬 3.7.3을 사용하고 있습니다.

목록에서 허용해야 하는 유형에 주석을 달 수 있으려면 다음을 사용해야 합니다.typing.List

from typing import List

그래서 당신은 수입했습니까?List?

갱신하다

Python > 3.9를 사용하는 경우 @Adam을 참조하십시오.Er8의 대답

Python 3.9 이후에는 기본 제공 컬렉션 유형(예:list)에서 해당 대문자로 표시된 유형을 가져오는 대신 일반 유형으로 사용합니다.typing.
이것은 PEP 585 덕분입니다.

따라서 Python 3.9 이상에서는 실제로 다음과 같이 쓸 수 있습니다.

def totalFruit(self, tree: list[int]) -> int: # Note list instead of List
    pass

아무것도 수입하지 않아도 됩니다.

유형 힌트에서 str 목록을 지정하려면 다음을 사용할 수 있습니다.typing패키지 및from typing import List(자본화됨, 내장된 기능과 혼동하지 않음)list)

다음과 같은 목록을 정의하는 경우a = [1,2,3],그리고나서type(a)돌아올 것입니다<class 'list'>그 말은 그것이 내장된 것에 의해 만들어질 것이라는 것을 의미합니다.list.

List반환 형식에 주석을 달 때 유용합니다.예를 들어 Python3를 사용하는 함수 시그니처는 다음과 같습니다.def threeSumClosest(self, nums: List[int], target: int) -> int:https://leetcode.com/problems/integer-to-roman/ 에서 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/57505071/nameerror-name-list-is-not-defined

반응형