91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python代碼智能感知類型標注與特殊注釋實例分析

發布時間:2022-09-22 09:52:29 來源:億速云 閱讀:165 作者:iii 欄目:開發技術

這篇文章主要介紹“Python代碼智能感知類型標注與特殊注釋實例分析”,在日常操作中,相信很多人在Python代碼智能感知類型標注與特殊注釋實例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python代碼智能感知類型標注與特殊注釋實例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    一、代碼智能感知

    想必大部分現代的集成開發環境(IDE)都有代碼智能感知功能吧!

    智能感知(IntelliSense),就是在我們寫代碼的時候,代碼編輯器自動彈出我們代碼中需要補全的部分,而這些補全的部分就是代碼編輯器通過智能感知得到的,最重要的是,代碼編輯器智能地感知補全的部分是通過代碼中的變量的類型來得到的。

    Python代碼智能感知類型標注與特殊注釋實例分析

    一般的智能感知

    說了這么多之后,大家一定都清楚智能感知是什么了,但有些時候,代碼卻沒有智能感知(如下)

    Python代碼智能感知類型標注與特殊注釋實例分析

    智能感知失效

    當代碼量很大的時候,代碼的智能感知是十分重要的,它可以幫你迅速了解到這個變量那個變量是個什么東西,以減少你生產BUG!

    寫一個好的注釋(或者類型標注),不僅僅是方便未來復用你代碼的人,也是為了自己,實際上,“為了自己”可不只是簡單的方便自己了解代碼,更多的是讓IDE智能地感知到你的代碼,IDE理解了你的代碼,它就會為你提供對應的信息(如代碼補全和提示作用),這對程序員是極其友好的!

    通過了解后面的類型標注特殊的注釋,你將解決幾乎所有的智能感知失效的問題!

    二、類型標注

    Python的類型標注有幾種,在下面我給出我所知道的一些

    函數參數的類型標注 【簡單操作】

    def function(num: int, string: str):
        pass

    在上面的代碼中,函數參數的后面跟了一個冒號和一個類名,代表參數的數據類型,這個類名可以是內置的類,如str、int、float等,也可以是自己定義的類、也可以是模塊、庫中的類,如tkinter.Tk

    num參數是int類型的,string參數是str類型的,這些類型標注不僅僅在函數被定義的地方可以被看見,在調用該函數的時候也能通過IDE的智能感知而被看見(如下)

    Python代碼智能感知類型標注與特殊注釋實例分析

    函數參數的類型標注

    這個類型標注之后,并不會強制該參數使用該類型,它只是起提示作用,相當于注釋,同時,IDE會通過智能感知該類型標注,給出相應的代碼提示

    Python代碼智能感知類型標注與特殊注釋實例分析

    代碼提示作用

    【高級操作】

    import typing
     
    def function(num: int,
                 lis: list[int],
                 key: typing.Literal[4, 5, 6],
                 string: str | None = '123'):
        pass

    上面的代碼中:

    list[int] 的意思是,lis參數的數據類型為一個內含整數數據的列表類型

    typing是一個官方的內置模塊,專門用于類型標注,typing.Literal[4, 5, 6] 表示參數key的預期值只能為4或者5或者6,也就是說,該函數接收的key參數,它只希望它是4、5或者6這三個值中的一個

    str | None 的意思是,string參數的數據類型可以為str或者是None類型,此處說明一下,類型標注中用 “|” 代表或者的這種操作是在 Python3.10 的時候才加入的,在之前的版本中,這種用法只在 pyi 文件(Python存根文件)中可以用

    下面的代碼提示中,我們就能看到類似于上面的類型標注的作用

    Python代碼智能感知類型標注與特殊注釋實例分析

    高級操作

    順便一提,那個省略號(三個連續的小數點)的意思的默認值(一般用于pyi存根文件中)

    函數返回值的類型標注

    def pow(m: int, n: int) -> int:
        return m**n

    函數返回值的類型標注類似于上面所說的參數類型標注,只不過這里標注的類型只的是函數的返回值的數據類型,同樣的,只起提示作用,沒有強制效果

    這個標注也有高級用法,與上面的完全,一樣,此處不再贅述

    順便一提,list[int, int, int] 表示一個含有三個整數數據的列表類型

    變量的類型標注

    傳言有一種從天而降的寫法,不知大家見過沒有

    key: int
    key = 3
     
    """
    或者這樣寫:
    key: int = 3
    """
     
    print(key) # 輸出3

    這個變量名后面加一個冒號、再加一個類名的寫法也是類型標注的一種,只不過它不是函數的參數,而是一般變量而已,用法同上

    那么,這個類型標注有什么用呢?直接賦值給該變量一個列表,那么IDE不也能識別它么?

    這對于一般的變量確實沒啥用,但是,下面的這種操作,你可看好了

    Python代碼智能感知類型標注與特殊注釋實例分析

    變量的類型標注

    上面的這種情況,當變量沒有提前做好類型標注時,后面寫代碼就因為沒有IDE的提示而極其麻煩

    變量的類型標注還有一種方法,將在后面的 特殊的注釋 中講到

    三、特殊的注釋

    一段看似普通的注釋,實際也有著特殊的作用,就像C#中的特殊注釋一樣(三條斜杠“///”),Python也有著它特殊的注釋

    【三引號注釋】

    想必一個合格的Python程序員,都知道三引號注釋的特殊作用吧

    它不僅僅是一段普通的注釋,它可以換行(都知道的),它寫在函數和類下面表示幫助文檔等等……這里就不再贅述了

    【特殊的 # 注釋】

    它只能單行注釋……除此之外難道它還有別的特性???對!別的特性!

    當 # 注釋以這樣一種格式寫的時候,它有著和類型標注同樣的效果!!!

    key = [] # type: list[float]

    # 注釋后面寫上 type,再加一個冒號、然后加上數據類型,它就成了類型標注!!!

    Python代碼智能感知類型標注與特殊注釋實例分析

    特殊的 # 注釋

    是不是大多數人都不知道這個特性呢?

    四、特殊的類型

    有一些比較特別的數據類型,有些不是內置的但又算是內置的,但你又不容易找到它,比如迭代器類型、生成器類型、函數類型(Python里函數實際也是個對象,也有類型)等等,下面給出一個表格方便大家進行類型的標注

    類型名稱數據類型引用方式
    函數function

    function

    types.FunctionType

    方法method

    types.MethodType

    迭代器Iterator

    typing.Iterator

    collections.abc.Iterator

    生成器Generator

    typing.Generator

    collections.abc.Generator

    序列Sequence

    typing.Sequence

    collections.abc.Sequence

    到此,關于“Python代碼智能感知類型標注與特殊注釋實例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    通渭县| 琼中| 连江县| 稻城县| 湾仔区| 淳化县| 祥云县| 广水市| 铁力市| 盐边县| 饶阳县| 西华县| 平罗县| 延庆县| 广饶县| 普定县| 宜兰市| 金坛市| 社旗县| 开封县| 双牌县| 紫金县| 都昌县| 即墨市| 昌宁县| 平昌县| 阳西县| 开原市| 博客| 凤翔县| 达州市| 巴东县| 南召县| 周口市| 文化| 双江| 城口县| 营口市| 理塘县| 淮安市| 桑植县|