Python代碼參數類型提示(Type Hints)筆記


在Python 3.5版本之前是沒有參數類型提示的,在3.5版本加入了這一項,這一項新的內容的優點在於幫助我們明確函數中每個參數的類型是什么,方便排查問題及項目交接后,下一任能夠看懂代碼,但是這一樣不像其他語言一樣強制檢查參數類型,這里只是為了提示,不影響代碼執行
具體文檔參考官網文檔: https://docs.python.org/3/library/typing.html


不加入類型提示

from typing import List

def say(msg):
    """
    msg: 消息
    """
    return msg

加入類型提示后

from typing import List # 需要導入 typing 包

# 單條消息
def say(msg:str) -> str: # -> 函數返回值的類型
    """
    msg: 消息
    """
    return msg
# 多條消息  
def say(msg:List) -> List: # -> 函數返回值的類型
    """
    msg: 消息
    """
    return msg

我們先看下不加入類型提示的代碼,因為它所需要的參數 msg 沒有類型注釋,這個函數的返回值也沒有類型注釋,這樣的話我們雖然可以正確執行,但是在理解的時候雖然知道他接收的是msg, 但是不知道這個是一條消息,還是多條消息,而我們在加入類型提示后,我們就知道這里接收的是單條消息,還是一個消息列表.

常用參數類型

Str 字符型

# 單條消息
def say(msg:str) -> str: # -> 函數返回值的類型
    """
    msg: 消息
    """
    return msg

say("hello world") # 支持
say(111) # 不支持

Int 整型

# 單條消息
def say(stuid:id) -> id: # -> 函數返回值的類型
    """
    stuid: 學生id
    """
    return stuid

say(20210001)

Float 浮點型

# 單條消息
def say(pi:float) -> float: # -> 函數返回值的類型
    """
    pi: Π,3.1415926
    """
    return pi

say(3.14)

Bool 布爾型

# 單條消息
def say(is_win:bool) -> bool: # -> 函數返回值的類型
    """
    is_win: 是否贏了
    """
    return pi

say(True)

List 列表

# 多條消息  
def say(msg:List) -> List: # -> 函數返回值的類型
    """
    msg: 消息
    """
    return msg

say(["hello","world"])

Tuple 元組

# 多條消息  
def say(stuid:Tuple) -> Tuple: # -> 函數返回值的類型
    """
    stuid: 學生id
    """
    return msg

say((2021001,2021002,2021003,))

Dict 字典

# 單條消息
def say(stuinfo:Dict) -> Dict: # -> 函數返回值的類型
    """
    stuinfo: 學生信息
    """
    return stuinfo

say({"stu_name":"張三"})

New Type 自定義類型

from typing import NewType
UserName = NewType('UserName',str) 
def say(name:UserName) -> UserName:# -> 函數返回值的類型
    """
    name: 名字
    """
    return name

say("張三") # 支持
say(111) # 不支持

Union 公用類型

from typing import Union
# Union[int,List] 支持int類型或者List類型,不支持其他類型的參數
def say(msg:Union[int,List]) -> Union[int,List]:# -> 函數返回值的類型
    """
    msg: 消息
    """
    return msg

say("hello") # 不支持(類型檢查不支持,不影響代碼執行)
say([111,222]) # 支持
say(111) # 支持

Optional

from typing import Optional
# Optional[str] 是對於存在默認的情況,若有默認值,則采用默認值,否則采用str類型
def say(msg:Optional[str]=None) -> None:# -> 函數返回值的類型
    """
    msg: 消息
    """
    return msg

say("hello") # 支持
say() # 支持
say(111) # 不支持

復合類型

MsgType = List[str] # 聲明一個列表套字符串的類型,例如:["hello"]
def say(msg:MsgType) -> List:# -> 函數返回值的類型
    """
    msg: 消息
    """
    return msg

say(["hello","world"]) # 支持
say([111,222]) # 不支持
say(111) # 不支持


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM