Python-函數註解

在Python3 中提供了一種句法,用於爲函數聲明中的參數和返回值附加元數據。下面是添加了註解後的一個函數示例:

def clip(text:str, max_len:'int > 0'=80) ->str:  # 有註解的函數聲明
    """在max_len前面或後面的第一個空格處截斷文本"""
    end = None
    if len(text) > max_len:
        space_before = text.find(' ', 0, max_len)
        if space_before >= 0:
            end = space_before
        else:
            space_after = text.find(' ', max_len)
            if space_after >= 0:
                end = space_after
    if end is None:  # 沒找到空格
        end = len(text)
    return text[:end].strip()

函數聲明中的各個參數可以在:之後增加註解表達式。如果參數有默認值,註解放在參數名和=號之間。如果想註解返回值  在)和函數聲明末尾的:之間添加 ->和一個表達式。這個表達式可以是任何類型;註解中最常用的類型是類(如str和int)和字符串(如'int > 0'),在上述示例中,max_len參數的註解用的就是字符串。 

註解不會做任何處理,只是存儲在函數的__annotations__屬性(一個字典)中!!!

我們可以將函數的__annotations__屬性打印出來,結果如下:

{'text': <class 'str'>, 'max_len': 'int > 0', 'return': <class 'str'>}

其中'return'鍵保存的是返回值的註解,即上述示例中函數聲明裏以 '->' 標記的部分。Python對註解所做的唯一的事情是,把它們存儲在函數的__annotations__屬性裏。僅此而已,Python不做檢查,不做強制、不做驗證,什麼操作都不做。換句話說,註解對Python解釋器沒有任何意義。註解只是元數據,可以供IDE、框架和裝飾器等工具使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章