NameError: name 'List' is not defined
NameError: name 'List' is not defined
我真的不确定为什么这不起作用。这是代码的重要部分(来自 leetcode 挑战)。
第一行抛出 NameError。
def totalFruit(self, tree: List[int]) -> int:
pass
如果我首先尝试导入 List
,我会得到一个错误 No module named 'List'
。我正在使用来自 Anaconda 的 Python 3.7.3。
为了能够注释您的列表应该接受什么类型,您需要使用 typing.List
from typing import List
那你导入了吗List
?
更新
如果您使用的是 Python > 3.9,
为了能够在类型提示中指定一个 str 列表,您可以使用 typing
包和 from typing import List
(大写,不要与内置的 list
)
自Python 3.9起,您可以使用内置集合类型(例如list
)作为泛型类型,而不是从typing
导入相应的大写类型。
这要感谢 PEP 585
所以在 Python 3.9 或更新版本中,你实际上可以写:
def totalFruit(self, tree: list[int]) -> int: # Note list instead of List
pass
无需导入任何内容。
如果我们定义一个列表,比如a = [1,2,3]
,那么type(a)
就会return<class 'list'>
,这意味着它将由内置的list
创建].
List
可用于注释 return 类型。例如,使用 Python3 的函数签名:def threeSumClosest(self, nums: List[int], target: int) -> int:
from https://leetcode.com/problems/integer-to-roman/.
我真的不确定为什么这不起作用。这是代码的重要部分(来自 leetcode 挑战)。 第一行抛出 NameError。
def totalFruit(self, tree: List[int]) -> int:
pass
如果我首先尝试导入 List
,我会得到一个错误 No module named 'List'
。我正在使用来自 Anaconda 的 Python 3.7.3。
为了能够注释您的列表应该接受什么类型,您需要使用 typing.List
from typing import List
那你导入了吗List
?
更新
如果您使用的是 Python > 3.9,
为了能够在类型提示中指定一个 str 列表,您可以使用 typing
包和 from typing import List
(大写,不要与内置的 list
)
自Python 3.9起,您可以使用内置集合类型(例如list
)作为泛型类型,而不是从typing
导入相应的大写类型。
这要感谢 PEP 585
所以在 Python 3.9 或更新版本中,你实际上可以写:
def totalFruit(self, tree: list[int]) -> int: # Note list instead of List
pass
无需导入任何内容。
如果我们定义一个列表,比如a = [1,2,3]
,那么type(a)
就会return<class 'list'>
,这意味着它将由内置的list
创建].
List
可用于注释 return 类型。例如,使用 Python3 的函数签名:def threeSumClosest(self, nums: List[int], target: int) -> int:
from https://leetcode.com/problems/integer-to-roman/.