一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python類型提示Type Hints示例詳解

Python類型提示Type Hints示例詳解

2021-12-21 00:04小菠蘿測(cè)試筆記 Python

在做自動(dòng)化測(cè)試的時(shí)候,類型提示會(huì)讓你寫代碼時(shí)更加流程,當(dāng)你在一個(gè)模塊定義了類型,而其他模塊沒有提示的時(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 無法像靜態(tài)類型語(yǔ)言那樣分析代碼,及時(shí)給我們相應(yīng)的提示,比如字符串的 split 方法

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

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

解決上述問題,類型提示

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 特性加的

變量類型提示

沒有使用類型提示

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

?
1
2
3
4
5
6
7
8
9
10
# '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]

使用了類型提示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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ò)嗎?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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ǔ)法提示

Python類型提示Type Hints示例詳解

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

變量類型提示-元組打包

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 正常的元組打包
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)

為什么要加 ...

Python類型提示Type Hints示例詳解

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

變量類型提示-元組解包

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 正常元組解包
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í)候詳解

在類里面使用

?
1
2
3
4
class basicstarship:
    captain: str = 'picard'               # 實(shí)例變量,有默認(rèn)值
    damage: int                           # 實(shí)例變量,沒有默認(rèn)值
    stats: classvar[dict[str, int]] = {}  # 類變量,有默認(rèn)值

classvar

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

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

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

栗子一

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

栗子二

?
1
2
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)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/poloyy/p/15145380.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本暖暖视频在线观看 | 四川女人偷人真实视频 | 秋霞理论一级在线观看手机版 | 日本片免费观看一区二区 | 国产a一级毛片爽爽影院 | 国四虎影永久 | 精品久久日日躁夜夜躁AV | 给我免费的视频在线观看 | 国产精品青青青高清在线观看 | 国产成人欧美视频在线 | 久久婷婷五月免费综合色啪 | 国产网站免费在线观看 | 国产亚洲女在线线精品 | 色女阁| 国语刺激对白勾搭视频在线观看 | 美女班主任让我爽了一夜视频 | 国产成+人+综合+亚洲欧美丁香花 | 91九色在线视频 | 国产精品成人在线播放 | 国产精品久久久久久久久免费 | 午夜影院网页 | 99视频九九精品视频在线观看 | 免费国产午夜高清在线视频 | 亚洲网红精品大秀在线观看 | 男人操男人 | 91手机在线 | 人禽l交视频在线播放 视频 | 草莓视频深夜释放 | 动漫人物差差差动漫人物免费观看 | 久久精品一区二区免费看 | 国产精品视频第一区二区三区 | 色综合中文字幕天天在线 | 日韩精品在线视频观看 | 红楼梦黄色小说 | 98免费视频 | 日本一区二区三区四区无限 | 精品国产午夜久久久久九九 | 欧美一级片在线视频 | 国产趴着打光屁股sp抽打 | 免费片在线观看高清 | 国产精品亚洲综合久久 |