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

解讀python中的類型提示(type hint)

 更新時(shí)間:2023年01月31日 10:04:24   作者:johnjim0816  
這篇文章主要介紹了解讀python中的類型提示(type hint),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python類型提示(type hint)

在刷leetcode或者一些官方源碼的時(shí)候,經(jīng)??吹饺缦伦謽樱?/p>

class Solution:
? ? def sortList(self, head: ListNode) -> ListNode:

這就是類型提示(type hint),下面來個(gè)簡單的例子,

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

如上,其中name是傳入的參數(shù),而:右邊的str則是name期望的類型即str,而->則指向期望函數(shù)的返回類型。

如果不期望有返回值可以直接指向None,如下:

def feeder(get_next_item: Callable[[], str]) -> None:

Type Hints是雞肋還是最佳實(shí)踐?

定義一個(gè)這樣的函數(shù):

def add(a, b): print(a + b)

看簽名應(yīng)該不難猜出,這是做加法的,把參數(shù)a和b加起來。a和b應(yīng)該是兩個(gè)數(shù)字,或者兩個(gè)字符串。但不能一個(gè)數(shù)字一個(gè)字符串。

如果我們的目的就是為了加數(shù)字,最好能給一些說明。

為了實(shí)現(xiàn)這個(gè)目的,有兩種做法:

一種是加注釋:

#把參數(shù)a和b相加,a和b必須都是數(shù)字。
def add(a, b):
 print(a + b)

更好一點(diǎn)的做法是用docstring來寫:

def add(a, b):
  '''把參數(shù)a和b相加,a和b必須都是數(shù)字。'''
 print(a + b)

Type Hint

還有一種寫法就是用Type Hint,直接聲明參數(shù)的類型:

#為了簡單,這里假設(shè)只能處理整數(shù)
def add(a:int, b:int) -> int:
 print(a + b)

Type Hint是Python3.6開始引入的一種特性。

  • 通過變量名:變量類型的寫法指定參數(shù)的類型
  • 通過**->返回值類型**的寫法指定返回值的數(shù)據(jù)類型。

除了可以用在方法中,也可以用在普通的變量上:

a:int #定義變量a,并指定a是int類型
a = 5
print(a)

Type Hint的作用

有了Type Hint,就可以做到類型安全了嗎?

并不是的,下面的代碼仍然能夠成功運(yùn)行:

a:int 

a = 5
print(a)

a = 'hello' #把字符串賦值給a,并不會(huì)有運(yùn)行時(shí)錯(cuò)誤
print(a)

結(jié)合我前面講add函數(shù)的脈絡(luò),Type Hint的作用和注釋是一樣的,就是另外一種注釋手法而已,并不會(huì)Python解釋器產(chǎn)生任何影響。

如果是這樣,要它有何用?它有兩個(gè)用處:

1.給代碼的閱讀者更明確的類型提示,調(diào)用代碼的時(shí)候傳入錯(cuò)誤類型的可能性會(huì)降低,但完全靠自覺。

2.有了Type Hints,IDE可以在寫代碼的過程中就給你一些類型提示,這樣可以更順暢的寫出安全的代碼。

我應(yīng)該用嗎?

我的建議:

  • 大部分情況下沒必要使用。知道就好。
  • 如果寫共用的類庫,可以考慮使用。僅僅是考慮,也不一定要用。

我的理由是:

  • 人生苦短,我用Python!如果非要夾(Java)里夾氣的,你去用Java或者其他的強(qiáng)類型語言好了。
  • 畢竟用了Type Hint之后,代碼看起來啰嗦多了,而且也失去了Python動(dòng)態(tài)類型的一些優(yōu)勢。
  • 還有一個(gè)理由,不加Type Hint,也可以使用Mypy實(shí)現(xiàn)類似的效果。

我們來看幾個(gè)常用的類庫,看看它們用不用。

  • 小海龜turtle - NO

  • Pandas - NO

  • Openpyxl - YES

所以啊,有的用了,有的沒用。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解python讀取image

    詳解python讀取image

    這篇文章主要介紹了python讀取image的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python如何對齊字符串

    Python如何對齊字符串

    這篇文章主要介紹了Python如何對齊字符串,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python 面向?qū)ο缶幊痰娜筇匦灾^承

    Python 面向?qū)ο缶幊痰娜筇匦灾^承

    繼承也是面向?qū)ο缶幊倘筇匦灾?,本篇文章我們就來學(xué)習(xí)Python中繼承的用處、使用場景及用與不用的區(qū)別,感興趣的朋友一起來閱讀下面文章吧
    2021-09-09
  • python模擬登陸網(wǎng)站的示例

    python模擬登陸網(wǎng)站的示例

    這篇文章主要介紹了python模擬登陸網(wǎng)站的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Django Sitemap 站點(diǎn)地圖的實(shí)現(xiàn)方法

    Django Sitemap 站點(diǎn)地圖的實(shí)現(xiàn)方法

    這篇文章主要介紹了Django Sitemap 站點(diǎn)地圖的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python環(huán)境下搭建屬于自己的pip源的教程

    Python環(huán)境下搭建屬于自己的pip源的教程

    這篇文章主要介紹了Python環(huán)境下搭建屬于自己的pip源的教程,同時(shí)也附帶講解了修改pip源設(shè)定的方法,需要的朋友可以參考下
    2016-05-05
  • Python+gensim實(shí)現(xiàn)文本相似度分析詳解

    Python+gensim實(shí)現(xiàn)文本相似度分析詳解

    這篇文章主要介紹了Python+gensim實(shí)現(xiàn)文本相似度分析詳解,在開發(fā)中我們會(huì)遇到進(jìn)行文本相似度分析的需求,計(jì)算文本相似度,用于鑒別文章是否存在抄襲,需要的朋友可以參考下
    2023-07-07
  • Pycharm安裝第三方庫時(shí)Non-zero exit code錯(cuò)誤解決辦法

    Pycharm安裝第三方庫時(shí)Non-zero exit code錯(cuò)誤解決辦法

    這篇文章主要介紹了Pycharm安裝第三方庫時(shí)Non-zero exit code錯(cuò)誤解決辦法,最好的解決辦法可以通過“Pycharm”左下角的“Terminal”,在pycharm內(nèi)使用pip安裝,以安裝“requests”為例,需要的朋友可以參考下
    2023-01-01
  • Python3爬蟲ChromeDriver的安裝實(shí)例

    Python3爬蟲ChromeDriver的安裝實(shí)例

    在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲ChromeDriver的安裝實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • python 數(shù)據(jù)提取及拆分的實(shí)現(xiàn)代碼

    python 數(shù)據(jù)提取及拆分的實(shí)現(xiàn)代碼

    這篇文章主要介紹了python 數(shù)據(jù)提取及拆分的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論

香港 | 黎平县| 方城县| 汽车| 台湾省| 电白县| 那曲县| 专栏| 思茅市| 专栏| 栾川县| 桦甸市| 松桃| 博兴县| 行唐县| 无为县| 子洲县| 海阳市| 澎湖县| 安图县| 扶余县| 青阳县| 霍山县| 句容市| 延津县| 安国市| 红河县| 峨眉山市| 盖州市| 辉南县| 静安区| 通州区| 张掖市| 安庆市| 安平县| 阜新市| 岳阳县| 敦化市| 永州市| 遵化市| 白山市|