亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python類型提示Type Hints示例詳解

 更新時(shí)間:2021年08月17日 10:41:54   作者:小菠蘿測(cè)試筆記  
在做自動(dòng)化測(cè)試的時(shí)候,類型提示會(huì)讓你寫代碼時(shí)更加流程,當(dāng)你在一個(gè)模塊定義了類型,而其他模塊沒(méi)有提示的時(shí)候,是相當(dāng)不方便,這篇文章主要給大家介紹了關(guān)于Python類型提示Type Hints的相關(guān)資料,需要的朋友可以參考下

為什么會(huì)有類型提示

Python是一種動(dòng)態(tài)類型語(yǔ)言,這意味著我們?cè)诰帉懘a的時(shí)候更為自由,運(yùn)行時(shí)不需要指定變量類型

但是與此同時(shí) IDE 無(wú)法像靜態(tài)類型語(yǔ)言那樣分析代碼,及時(shí)給我們相應(yīng)的提示,比如字符串的 split 方法

def split_str(s):
    strs = s.split(",")

由于不知道參數(shù) s 是什么類型,所以當(dāng)你敲  s.  的時(shí)候不會(huì)出現(xiàn) split 的語(yǔ)法提示

解決上述問(wèn)題,類型提示

Python 3.6 新增了兩個(gè)特性 PEP 484 和 PEP 526

  • PEP 484:https://www.python.org/dev/peps/pep-0484/
  • PEP 526:https://www.python.org/dev/peps/pep-0526/

幫助 IDE 為我們提供更智能的提示

這些新特性不會(huì)影響語(yǔ)言本身,只是增加一點(diǎn)提示

類型提示分類

主要分兩個(gè)

  • 變量提示:PEP 526 特性加的
  • 函數(shù)參數(shù)提示:PEP 484 特性加的

變量類型提示

沒(méi)有使用類型提示

想說(shuō)明變量的數(shù)據(jù)類型只能通過(guò)注釋

# 'primes' is a list of integers
primes = []  # type: List[int]

# 'captain' is a string (Note: initial value is a problem)
captain = ...  # type: str


class Starship:
    # 'stats' is a class variable
    stats = {}  # type: Dict[str, int]

使用了類型提示

from typing import List, ClassVar, Dict

# int 變量,默認(rèn)值為 0
num: int = 0

# bool 變量,默認(rèn)值為 True
bool_var: bool = True

# 字典變量,默認(rèn)為空
dict_var: Dict = {}

# 列表變量,且列表元素為 int
primes: List[int] = []


class Starship:
    # 類變量,字典類型,鍵-字符串,值-整型
    stats: ClassVar[Dict[str, int]] = {}

    # 實(shí)例變量,標(biāo)注了是一個(gè)整型
    num: int

這里會(huì)用到 typing 模塊,后面會(huì)再展開詳解

假設(shè)變量標(biāo)注了類型,傳錯(cuò)了會(huì)報(bào)錯(cuò)嗎?

from typing import List

# int 變量,默認(rèn)值為 0
num: int = 0

# bool 變量,默認(rèn)值為 True
bool_var: bool = True

# 字典變量,默認(rèn)為空
dict_var: Dict = {}

# 列表變量,且列表元素為 int
primes: List[int] = []


num = "123"
bool_var = 123
dict_var = []
primes = ["1", "2"]

print(num, bool_var, dict_var, primes)


# 輸出結(jié)果
123 123 [] ['1', '2']

它并不會(huì)報(bào)錯(cuò),但是會(huì)有 warning,是 IDE 的智能語(yǔ)法提示

所以,這個(gè)類型提示更像是一個(gè)規(guī)范約束,并不是一個(gè)語(yǔ)法限制

變量類型提示-元組打包

# 正常的元組打包
a = 1, 2, 3

# 加上類型提示的元組打包
t: Tuple[int, ...] = (1, 2, 3)
print(t)

t = 1, 2, 3
print(t)

# py3.8+ 才有的寫法
t: Tuple[int, ...] = 1, 2, 3
print(t)

t = 1, 2, 3
print(t)


# 輸出結(jié)果
(1, 2, 3)
(1, 2, 3)
(1, 2, 3)
(1, 2, 3)

為什么要加 ...

不加的話,元組打包的時(shí)候,會(huì)有一個(gè) warning 提示

變量類型提示-元組解包

# 正常元組解包
message = (1, 2, 3)
a, b, c = message
print(a, b, c)  # 輸出 1 2 3

# 加上類型提示的元組解包
header: str
kind: int
body: Optional[List[str]]

# 不會(huì) warning 的栗子
header, kind, body = ("str", 123, ["1", "2", "3"])

# 會(huì)提示 warning 的栗子
header, kind, body = (123, 123, ["1", "2", "3"])

Optional 會(huì)在后面講 typing 的時(shí)候詳解

在類里面使用

class BasicStarship:
    captain: str = 'Picard'               # 實(shí)例變量,有默認(rèn)值
    damage: int                           # 實(shí)例變量,沒(méi)有默認(rèn)值
    stats: ClassVar[Dict[str, int]] = {}  # 類變量,有默認(rèn)值

ClassVar

  • 是 typing 模塊的一個(gè)特殊類
  • 它向靜態(tài)類型檢查器指示不應(yīng)在類實(shí)例上設(shè)置此變量

函數(shù)參數(shù)類型提示

不僅提供了函數(shù)參數(shù)列表的類型提示,也提供了函數(shù)返回的類型提示

栗子一

# 參數(shù) name 類型提示 str,而函數(shù)返回值類型提示也是 str
def greeting(name: str) -> str:
    return 'Hello ' + name

栗子二

 def greeting(name: str, obj: Dict[str, List[int]]) -> None:
    print(name, obj)

總結(jié)

到此這篇關(guān)于Python類型提示Type Hints的文章就介紹到這了,更多相關(guān)Python類型提示Type Hints內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python打印直角三角形與等腰三角形實(shí)例代碼

    python打印直角三角形與等腰三角形實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于python打印直角三角形與等腰三角形的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python實(shí)現(xiàn)簡(jiǎn)單的名片管理系統(tǒng)

    python實(shí)現(xiàn)簡(jiǎn)單的名片管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)名片管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • pymongo實(shí)現(xiàn)控制mongodb中數(shù)字字段做加法的方法

    pymongo實(shí)現(xiàn)控制mongodb中數(shù)字字段做加法的方法

    這篇文章主要介紹了pymongo實(shí)現(xiàn)控制mongodb中數(shù)字字段做加法的方法,涉及Python使用pymongo模塊操作mongodb數(shù)據(jù)庫(kù)字段的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Python中用try-except-finally處理異常問(wèn)題

    Python中用try-except-finally處理異常問(wèn)題

    這篇文章主要介紹了Python中用try-except-finally處理異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python中plt.imshow與cv2.imshow顯示顏色問(wèn)題

    python中plt.imshow與cv2.imshow顯示顏色問(wèn)題

    這篇文章主要介紹了plt.imshow與cv2.imshow顯示顏色問(wèn)題,本文給大家介紹的非常詳細(xì),同時(shí)給大家提到了cv2.imshow()和plt.imshow()的區(qū)別講解,需要的朋友可以參考下
    2020-07-07
  • 解析Python中的生成器及其與迭代器的差異

    解析Python中的生成器及其與迭代器的差異

    生成器是一種特殊的迭代器,而反過(guò)來(lái)說(shuō)則就不對(duì)了,迭代器在Python中是一個(gè)更抽象的概念,以下我們就來(lái)詳細(xì)解析Python中的生成器及其與迭代器的差異
    2016-06-06
  • Python列表(list)常用操作方法小結(jié)

    Python列表(list)常用操作方法小結(jié)

    這篇文章主要介紹了Python列表(list)常用操作方法小結(jié),本文講解了常用操作方法和一些簡(jiǎn)單代碼實(shí)例,需要的朋友可以參考下
    2015-02-02
  • Python PyPDF2模塊安裝使用解析

    Python PyPDF2模塊安裝使用解析

    這篇文章主要介紹了Python PyPDF2模塊安裝使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python socket模塊實(shí)現(xiàn)的udp通信功能示例

    Python socket模塊實(shí)現(xiàn)的udp通信功能示例

    這篇文章主要介紹了Python socket模塊實(shí)現(xiàn)的udp通信功能,結(jié)合具體實(shí)例形式分析了Python使用socket模塊實(shí)現(xiàn)UDP通信客戶端與服務(wù)器端相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-04-04
  • 詳解Python3中的多重繼承和混入類

    詳解Python3中的多重繼承和混入類

    Python原生支持多重繼承,這使得我們可以從多個(gè)父類中繼承屬性和方法,在本文中,我們將介紹Python中多重繼承的概念,并討論在實(shí)際情況下可能遇到的坑,我們還將討論如何使用混入類來(lái)避免這些問(wèn)題,需要的朋友可以參考下
    2023-05-05

最新評(píng)論