讓你的Python代碼實(shí)現(xiàn)類型提示功能
Python是一種動態(tài)類型語言,這意味著我們在編寫代碼的時(shí)候更為自由,但是與此同時(shí)IDE無法向靜態(tài)類型語言那樣分析代碼,及時(shí)給我們相應(yīng)的提示。為了解決這個問題,Python 3.6 新增了幾個特性PEP 484和PEP 526,幫助編輯器為我們提供更智能的提示。這些新特性不會影響語言本身,只是增加一點(diǎn)提示。當(dāng)你使用比較智能的開發(fā)工具比如PyCHarm時(shí),就會感覺到類型提示的方便之處。
變量注解
首先先看看變量注解。它的語法和某些類型后置的語言類似。
# 變量注解 a: int = 5 b: bool = True f: float = 5.0 s: str = "abc"
聲明類型之后,編輯器和IDE就會讀取到這個類型注解,然后給予我們相應(yīng)的提示。程序在運(yùn)行的時(shí)候行為完全不變。
如果是自己編寫的類,也可以用作變量注解。
class MyClass:
def fun1(self):
print("fun1")
me: MyClass = MyClass()
me.fun1()
對于較復(fù)雜的內(nèi)置類型、泛型、生成器、自定義類型等,需要引入標(biāo)準(zhǔn)庫typing。對于更復(fù)雜的類型,請直接參考typing標(biāo)準(zhǔn)庫文檔。
from typing import TypeVar, Iterable, Tuple, Dict, List
m: Dict[int, int] = {1: 1, 2: 2}
t: Tuple[int, ...] = (1, 2, 3)
l: List[int] = [1, 2, 3, 4]
函數(shù)注解
當(dāng)使用Python編寫復(fù)雜的函數(shù)時(shí),我們常常為沒有合適的提示而苦惱。函數(shù)注解可以幫助我們解決這個問題。
def add(a: int, b: int) -> int: return a + b
為函數(shù)添加注解之后,當(dāng)我們調(diào)用這個函數(shù)的時(shí)候,編輯器就會給予對應(yīng)的提示。當(dāng)處理大型項(xiàng)目的時(shí)候,這個特性會很有用。
函數(shù)注解保存在函數(shù)的__annotations__屬性中,如果你準(zhǔn)備編寫程序讀取它,可以使用這個屬性。
print(add.__annotations__)
以上這篇讓你的Python代碼實(shí)現(xiàn)類型提示功能就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
pyqt5 QlistView列表顯示的實(shí)現(xiàn)示例
這篇文章主要介紹了pyqt5 QlistView列表顯示的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Python實(shí)現(xiàn)的幾個常用排序算法實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)的幾個常用排序算法實(shí)例例如直接插入排序、直接選擇排序、冒泡排序、快速排序等,需要的朋友可以參考下2014-06-06
對Python模塊導(dǎo)入時(shí)全局變量__all__的作用詳解
今天小編就為大家分享一篇對Python模塊導(dǎo)入時(shí)全局變量__all__的作用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python實(shí)現(xiàn)繪制3D條形圖的示例詳解
這篇文章主要為大家學(xué)習(xí)介紹了如何利用Python實(shí)現(xiàn)繪制3D條形圖,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-07-07
Python使用Gradio實(shí)現(xiàn)免費(fèi)的內(nèi)網(wǎng)穿透
內(nèi)網(wǎng)穿透是一種將內(nèi)部網(wǎng)絡(luò)服務(wù)暴露到公共網(wǎng)絡(luò)的技術(shù),可以讓外部用戶訪問內(nèi)部網(wǎng)絡(luò)上的服務(wù),本文將介紹如何使用Gradio實(shí)現(xiàn)免費(fèi)的內(nèi)網(wǎng)穿透,需要的可以參考下2024-03-03

