NameError: name 'List' is not defined


問題

環境:python3.8
代碼:在leetcode本地vs code運行時候報錯。NameError: name 'List' is not defined

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        pass

原因

經過查詢相關的資料,發現只需要在頭部導如typing模塊就行了。

from typing import List

typing模塊

python是一門弱類型的語言,使用過程不用過多關注變量的類型,但是同時也帶來了問題,就是代碼的易讀性變差了,有時候自己都不知道傳入的是什么參數。因此在python3.5之后,引入了一個typing模塊,這個模塊可以很好解決這個問題。

函數接受並返回一個字符串,注釋像下面這樣:

def greeting(name: str) -> str:
    return 'Hello ' + name

在函數 greeting 中,參數 name 預期是 str 類型,並且返回 str 類型。子類型允許作為參數。

typing模塊的作用

  • 類型檢查,防止運行時出現參數和返回值類型不對的情況
  • 作為開發文檔附加說明,方便使用函數時傳入和返回正確的參數,利於開發效率
  • 該模塊並不會實際影響到程序的運行,不會報錯,但是會有提示。

typing常用類型

  • int,long,float: 整型,長整形,浮點型;

  • bool,str: 布爾型,字符串類型;

  • List, Tuple, Dict, Set:列表,元組,字典, 集合;

  • Iterable,Iterator:可迭代類型,迭代器類型;

  • Generator:生成器類型;

注意:迭代器中的元素可能是多種類型,使用or或union操作符

參考:
https://www.jianshu.com/p/cec576f23667
https://docs.python.org/zh-cn/3.8/library/typing.html?highlight=typing#module-typing


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM