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

Python的typing模塊:類型提示 (Type Hinting)全面解析

 更新時間:2025年09月29日 10:37:55   作者:羚風雯  
typing 模塊是現(xiàn)代Python編程中一個極其重要的部分,typing模塊是Python從腳本語言向工程化語言邁進的重要一步,本文給大家介紹Python的typing模塊:類型提示 (Type Hinting)全面解析,感興趣的朋友一起看看吧

typing 模塊是現(xiàn)代Python編程中一個極其重要的部分。如果你想寫出健壯、可維護、易于理解的代碼,那么掌握它至關重要。

什么是typing模塊?

typing 模塊是Python 類型提示 (Type Hinting) 系統(tǒng)的核心。它在 Python 3.5 版本被正式引入,允許開發(fā)者在代碼中標注變量、函數(shù)參數(shù)和返回值的預期類型。

核心思想: Python 本身仍然是一門動態(tài)類型語言(在運行時才確定變量類型)。typing 模塊并不會改變這一點。它提供的是一種“提示”或“注解”,主要服務于以下三個方面:

  1. 靜態(tài)類型檢查工具 (Static Type Checkers):像 Mypy 這樣的工具可以像編譯器一樣提前掃描你的代碼,根據(jù)類型提示找出潛在的類型錯誤,從而在運行前發(fā)現(xiàn) bug。
  2. 集成開發(fā)環(huán)境 (IDE):像 PyCharm 這樣的 IDE 會利用這些提示來提供更智能、更精確的代碼補全、錯誤高亮和代碼導航。
  3. 代碼可讀性和可維護性:它讓代碼變得“自文檔化”,任何人(包括未來的你)都能快速理解函數(shù)應該接收什么樣的數(shù)據(jù),以及會返回什么樣的數(shù)據(jù)。

如何使用?常見類型提示介紹

typing 模塊中導入這些類型來使用它們。

1. 基礎集合類型 (Collections)

這是最常用的部分,用于描述列表、字典等容器內(nèi)部的數(shù)據(jù)類型。

List: 表示列表。

from typing import List
# 一個只包含字符串的列表
names: List[str] = ["Alice", "Bob", "Charlie"]
# 一個只包含整數(shù)的列表
primes: List[int] = [2, 3, 5, 7]

Dict: 表示字典,需要同時指定鍵 (Key) 和值 (Value) 的類型。

from typing import Dict
# 一個鍵為字符串、值為浮點數(shù)的字典
item_prices: Dict[str, float] = {"apple": 0.75, "banana": 1.25}

Tuple: 表示元組。

如果元組中每個元素的類型都一樣,且長度可變:

from typing import Tuple
# 一個包含任意數(shù)量整數(shù)的元組
coords: Tuple[int, ...] = (1, 2, 3) 

如果元組長度固定,且每個元素類型不同(更常見):

from typing import Tuple
# 一個包含姓名(str)、年齡(int)、是否會員(bool)的元組
user_profile: Tuple[str, int, bool] = ("Alice", 30, True)

Set: 表示集合。

from typing import Set
# 一個只包含整數(shù)的集合
unique_ids: Set[int] = {101, 102, 103}

現(xiàn)代語法 (Python 3.9+)
從 Python 3.9 開始,可以直接使用內(nèi)置的 list, dict, tuple, set 來進行類型提示,代碼更簡潔:

# Python 3.9+
names: list[str] = ["Alice", "Bob"]
item_prices: dict[str, float] = {"apple": 0.75}

但你仍然需要了解 typing 模塊,因為它提供了更多高級類型。

2. 特殊類型 (Special Types)

這些類型用于處理更復雜的場景。

Optional[T]: 表示一個值可以是 T 類型,也可以是 None。
這在函數(shù)參數(shù)有默認值 None 時非常常用。

from typing import Optional
def greet(name: Optional[str] = None):
    if name:
        print(f"Hello, {name}!")
    else:
        print("Hello, world!")
greet("Alice") # 正確
greet()        # 正確

Optional[str] 本質(zhì)上是 Union[str, None] 的簡寫。

Union[T1, T2, ...]: 表示一個值可以是多種類型中的任意一種。

from typing import Union
# 一個 ID 可以是整數(shù)或字符串
user_id: Union[int, str] = "user-123"
user_id = 404

Any: 表示任何類型。
這是一個“逃生艙”,當你實在不知道或者不關心某個變量的類型時可以使用它。但應盡量避免使用,因為它會讓你失去類型檢查帶來的所有好處。

from typing import Any
def process_anything(data: Any):
    # 在這里,IDE和類型檢查器對 data 一無所知
    print(data)

Callable: 用于注解函數(shù)或可調(diào)用對象。
語法是 Callable[[參數(shù)類型列表], 返回值類型]

from typing import Callable
# 定義一個函數(shù),它接受一個整數(shù),返回一個字符串
def format_id(user_id: int) -> str:
    return f"USER-{user_id}"
# processor 變量應該是一個可調(diào)用對象,其簽名與 format_id 匹配
processor: Callable[[int], str] = format_id

函數(shù)中的類型提示

這是類型提示最常見的應用場景,使用 -> 來注解函數(shù)的返回值類型。

from typing import List, Dict, Optional
class Item:
    def __init__(self, name: str, price: float):
        self.name = name
        self.price = price
# 這個函數(shù)的簽名清晰地告訴我們:
# - 它接受一個由 Item 對象組成的列表
# - 它返回一個浮點數(shù)
def calculate_total(items: List[Item]) -> float:
    total = 0.0
    for item in items:
        total += item.price
    return total
# 示例
shopping_cart = [Item("apple", 0.75), Item("banana", 1.25)]
total_cost = calculate_total(shopping_cart)
print(f"Total cost: {total_cost}") # Total cost: 2.0

總結(jié)

typing 模塊是 Python 從腳本語言向工程化語言邁進的重要一步。開始在你的代碼中使用它,你會發(fā)現(xiàn):

  • Bug 更少了:很多低級錯誤在編碼階段就被 IDE 和靜態(tài)檢查器發(fā)現(xiàn)了。
  • 代碼更好懂了:不再需要去猜測函數(shù)的參數(shù)和返回值是什么。
  • 重構更安全了:IDE 可以更自信地幫你修改代碼。
  • 與現(xiàn)代框架(如 FastAPI)的集成更順暢了。

它是一項投入少量時間學習,卻能長期獲得巨大回報的技能。

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

相關文章

  • Python實現(xiàn)自定義讀寫分離代碼實例

    Python實現(xiàn)自定義讀寫分離代碼實例

    這篇文章主要介紹了Python實現(xiàn)自定義讀寫分離代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • python 垃圾收集機制的實例詳解

    python 垃圾收集機制的實例詳解

    這篇文章主要介紹了 python 垃圾收集機制的實例詳解的相關資料,希望通過本文能幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • django中日志模塊logging的配置和使用方式

    django中日志模塊logging的配置和使用方式

    文章主要介紹了如何在Django項目的`settings.py`文件中配置日志記錄,并使用日志模塊記錄不同級別的日志,日志級別包括DEBUG、INFO、WARNING、ERROR和CRITICAL,級別越高,記錄的日志越詳細,通過配置和使用日志記錄器,可以更好地排查和監(jiān)控系統(tǒng)問題
    2025-01-01
  • 基于Python實現(xiàn)隨機點名系統(tǒng)的示例代碼

    基于Python實現(xiàn)隨機點名系統(tǒng)的示例代碼

    在某些難以抉擇得時候,我們經(jīng)常要用外力來幫助我們做出選擇,比如,梁山出征方臘前沙場點兵,挑選先鋒的場景。所以本文就來用Python做個隨機點名系統(tǒng)吧,需要的可以參考一下
    2023-04-04
  • Python打開指定網(wǎng)頁使用requests模塊爬蟲示例詳解

    Python打開指定網(wǎng)頁使用requests模塊爬蟲示例詳解

    這篇文章主要介紹了Python打開指定網(wǎng)頁使用requests模塊爬蟲的示例,Python?requests是一個常用的HTTP請求庫,可以方便地向網(wǎng)站發(fā)送HTTP請求,并獲取響應結(jié)果,requests模塊比urllib模塊更簡潔,感興趣的朋友可以參考下
    2024-02-02
  • Python數(shù)據(jù)結(jié)構與算法中的棧詳解

    Python數(shù)據(jù)結(jié)構與算法中的棧詳解

    這篇文章主要為大家詳細介紹了Python數(shù)據(jù)結(jié)構與算法中的棧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python獲取元素在數(shù)組中索引號的方法

    python獲取元素在數(shù)組中索引號的方法

    這篇文章主要介紹了python獲取元素在數(shù)組中索引號的方法,實例分析了Python中index方法的相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Pycharm設置去除顯示的波浪線方法

    Pycharm設置去除顯示的波浪線方法

    今天小編就為大家分享一篇Pycharm設置去除顯示的波浪線方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python中將txt文件轉(zhuǎn)換為csv文件的三種方法舉例

    python中將txt文件轉(zhuǎn)換為csv文件的三種方法舉例

    對于大數(shù)據(jù)的處理基本都是以CSV文件為基礎進行的,那么在進行深度學習的處理之前,需要先統(tǒng)一數(shù)據(jù)文件的格式,下面這篇文章主要給大家介紹了關于python中將txt文件轉(zhuǎn)換為csv文件的三種方法,需要的朋友可以參考下
    2024-06-06
  • Python?Paramiko上傳下載sftp文件及遠程執(zhí)行命令詳解

    Python?Paramiko上傳下載sftp文件及遠程執(zhí)行命令詳解

    這篇文章主要為大家介紹了Python?Paramiko上傳下載sftp文件及遠程執(zhí)行命令示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論

革吉县| 仁寿县| 铜川市| 荆州市| 盐城市| 永德县| 彩票| 乌鲁木齐县| 商河县| 广河县| 普安县| 道孚县| 阳城县| 全椒县| 兴城市| 太白县| 沙洋县| 台中县| 上杭县| 岑溪市| 黄大仙区| 通榆县| 连平县| 阜康市| 虹口区| 台南市| 淄博市| 广州市| 昭觉县| 临海市| 鄂托克前旗| 大连市| 商城县| 桑植县| 信阳市| 南投市| 桐城市| 旬邑县| 东台市| 江北区| 兰溪市|