最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?代碼智能感知類型標注與特殊注釋詳解

 更新時間:2022年09月21日 12:00:51   作者:小康2022  
這篇文章主要為大家介紹了Python?代碼智能感知類型標注與特殊注釋詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一個不會寫好的類型標注注釋的Python程序員,是讓使用TA的代碼的人都痛苦無比的事情……

—— 某某大佬

一、代碼智能感知

想必大部分現(xiàn)代的集成開發(fā)環(huán)境(IDE)都有代碼智能感知功能吧!

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

一般的智能感知

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

智能感知失效

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

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

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

二、類型標注

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

函數(shù)參數(shù)的類型標注 【簡單操作】

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

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

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

函數(shù)參數(shù)的類型標注

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

代碼提示作用

【高級操作】

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

上面的代碼中:

list[int] 的意思是,lis參數(shù)的數(shù)據(jù)類型為一個內(nèi)含整數(shù)數(shù)據(jù)的列表類型

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

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

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

高級操作

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

函數(shù)返回值的類型標注

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

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

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

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

變量的類型標注

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

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

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

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

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

變量的類型標注

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

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

三、特殊的注釋

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

【三引號注釋】

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

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

【特殊的 # 注釋】

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

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

key = [] # type: list[float]

# 注釋后面寫上 type,再加一個冒號、然后加上數(shù)據(jù)類型,它就成了類型標注?。?!

特殊的 # 注釋

是不是大多數(shù)人都不知道這個特性呢?

四、特殊的類型

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

類型名稱數(shù)據(jù)類型引用方式
函數(shù)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 代碼智能感知類型標注與特殊注釋詳解的詳細內(nèi)容,更多關(guān)于Python 智能感知類型標注的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python結(jié)合API實現(xiàn)即時天氣信息

    python結(jié)合API實現(xiàn)即時天氣信息

    這篇文章主要介紹了python結(jié)合API實現(xiàn)即時天氣信息的代碼,非常的實用,有需要的小伙伴可以參考下。
    2016-01-01
  • Vue中自定義指令的三個常用方法小結(jié)

    Vue中自定義指令的三個常用方法小結(jié)

    這篇文章主要為大家詳細介紹了Vue中自定義指令的三個常用方法,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解一下
    2024-02-02
  • 利用python寫個下載teahour音頻的小腳本

    利用python寫個下載teahour音頻的小腳本

    這篇文章主要跟大家分享了一個利用python寫的下載teahour音頻的小腳本,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 深入了解Python中反射和動態(tài)屬性的無限可能

    深入了解Python中反射和動態(tài)屬性的無限可能

    理解 Python 中的反射和動態(tài)屬性是編寫靈活和強大程序的關(guān)鍵,在這篇文章中,小編將帶領(lǐng)大家一起反射和動態(tài)屬性的概念,并提供大量示例代碼,希望對大家有所幫助
    2023-11-11
  • 詳解如何利用tushare、pycharm和excel三者結(jié)合進行股票分析

    詳解如何利用tushare、pycharm和excel三者結(jié)合進行股票分析

    這篇文章主要介紹了詳解如何利用tushare、pycharm和excel三者結(jié)合進行股票分析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 利用Python實現(xiàn)批量裁剪圖片

    利用Python實現(xiàn)批量裁剪圖片

    這篇文章主要為大家詳細介紹了如何基于Python如何批量裁剪圖片并保存,文中的示例代碼講解詳細,具有一定的參考價值,有需要的小伙伴可以了解一下
    2023-10-10
  • python?logging模塊的分文件存放詳析

    python?logging模塊的分文件存放詳析

    這篇文章主要介紹了python?logging模塊的分文件存放詳析,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • python sklearn中tsne算法降維結(jié)果不一致問題的解決方法

    python sklearn中tsne算法降維結(jié)果不一致問題的解決方法

    最近在做一個文本聚類的分析,在對文本數(shù)據(jù)embedding后,想著看下數(shù)據(jù)的分布,于是用sklearn的TSNE算法來降維embedding后的數(shù)據(jù)結(jié)果,當在多次執(zhí)行后,竟發(fā)現(xiàn)TSNE的結(jié)果竟然變了,而且每次都不一樣,所以本文就給大家講講如何解決sklearn中tsne算法降維結(jié)果不一致的問題
    2023-10-10
  • Python如何查找文件夾中含有指定關(guān)鍵字的文件

    Python如何查找文件夾中含有指定關(guān)鍵字的文件

    這篇文章主要介紹了Python如何查找文件夾中含有指定關(guān)鍵字的文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 使用python模塊plotdigitizer摳取論文圖片中的數(shù)據(jù)實例詳解

    使用python模塊plotdigitizer摳取論文圖片中的數(shù)據(jù)實例詳解

    這篇文章主要介紹了使用python模塊plotdigitizer摳取論文圖片中的數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論

比如县| 克拉玛依市| 临沭县| 怀柔区| 宜川县| 周至县| 峨眉山市| 库尔勒市| 玉山县| 吉林省| 阳高县| 屏东县| 东海县| 延安市| 浮山县| 松滋市| 东乡族自治县| 轮台县| 木兰县| 姚安县| 修武县| 易门县| 鞍山市| 涟水县| 马鞍山市| 卢龙县| 章丘市| 垫江县| 永仁县| 隆德县| 西宁市| 宜兰县| 陵川县| 政和县| 开平市| 防城港市| 灵台县| 思南县| 惠东县| 郧西县| 天长市|