python的typing模塊

python的typing模塊

參考:3個提高 Python 開發效率的小工具Python3 Typing模塊詳解

typeing模塊在python中提供類型支持,主要功能有:

  1. 類型檢查,防止運行時出現參數和返回值類型不符合
  2. 作爲開發文檔附件說明,方便使用者調用時傳入和返回參數類型(python在調用函數或變量時,無需對參數或變量進行類型說明,不利於閱讀)

image-20240219135435756

使用typing模塊,可以對參數類型做註釋並檢查,不會影響程序運行,不會報正式錯誤,只有提醒。

# 可以省略,str,int都是Python內置的數據類型
from typing import *

# 創建函數
def digits_sum(num:str) -> int:
    digits_arr = map(lambda x: int(x), num)
    return sum(digits_arr)

# 測試
num = "352"
result = digits_sum(num=num)
print(result)
# 輸出
10

map函數:

參考:python中的map函數

map是python的內置函數,會根據提供的函數對指定的序列做映射,第一個參數爲函數名,後面的參數是一個或多個可迭代的序列,返回一個新的集合:

map(function,iterable,...)

具體是:將函數作用在序列中的每個元素上,得到一個新的序列,不改變原有序列:

  • 例1
def square(x):
    return x ** 2
res = map(square,[1,2,3,4,5]) # 返回迭代器
list(res)
# 結果如下:
[1, 4, 9, 16, 25]
  • 例2
from typing import Dict, Any

# 創建函數
# d爲字典,其key值爲str,val爲任意類型(Any);輸出爲字典,key值爲str,val值爲float或者int
# 可以使用多個數據類型,如使用 or 或 | 分隔多個數據類型
def dict_multipy(d: Dict[str, Any]) -> Dict[str, float or int]:
    new_dict = {}
    for k, v in d.items():
        # isinstance():判斷一個函數是否是一個已知的類型,類似 type()
        if isinstance(v, (float, int)):
            new_dict[k] = v * 2
    return new_dict

# 測試
d = {"no": "100", "age": 12, "work_year": 3, "name": "JC"}
new_d = dict_multipy(d=d)
print(new_d)
# 輸出
{'age': 24, 'work_year': 6}
  • 例3:創建別名或者新的數據類型
from typing import List

# 取List[float]別名爲Vector
Vector = List[float]

def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]
scale(2.0, [1.0, -4.2, 5.4])
# 輸出
[2.0, -8.4, 10.8]

lambda 匿名函數:

參考: python 匿名函數(lambda函數)

lambda函數沒有函數名,無需定義,直接使用:

lambda 參數,參數,······:表達式

定義:

  1. 由關鍵詞lamdba修飾
  2. 冒號之前的是函數參數,可以爲空,即無參數匿名函數
  3. 冒號之後是表達式,無需寫return,結果即是輸出
  • 例子
f = lambda x, y, z: x+y+z
f(1,2,3) 
# 輸出
6
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章