您好,登錄后才能下訂單哦!
本篇文章為大家展示了Python中怎么實(shí)現(xiàn)參數(shù)注解,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
python是動(dòng)態(tài)語言,變量隨時(shí)可以被賦值,且能賦值為不同的類型,動(dòng)態(tài)語言很靈活,但是這種特性也是弊端;
難發(fā)現(xiàn):由于不做任何類型檢查,直到運(yùn)行期問題才顯現(xiàn)出來,或者線上運(yùn)行時(shí)才能暴露出問 題 ;
難使用:函數(shù)的使用者看到函數(shù)的時(shí)候,并不知道你的函數(shù)的設(shè)計(jì),并不知道應(yīng)該傳入什么類 型的數(shù)據(jù);
解決辦法:可以通過增加文檔Documentation String(幫助文檔)和使用函數(shù)參數(shù)注解兩種辦法來解決這個(gè)弊端;
def show(x: int, y: int) -> int: ''' :param x: :param y: :return: ''' return x * y print(show(10,20)) # 200
函數(shù)中間使用 ‘’’ ‘’’包裹起來的注釋說明就是參數(shù)注解;
參數(shù)注解可以避免動(dòng)態(tài)語音的弊端;
可以對(duì)函數(shù)的參數(shù)進(jìn)行類型注解和對(duì)函數(shù)的返回值進(jìn)行類型注解;
參數(shù)注解只對(duì)函數(shù)參數(shù)做一個(gè)輔助的說明,并不對(duì)函數(shù)參數(shù)進(jìn)行類型檢查;
# 示例1 import inspect def add(x:int, y:int, *args,**kwargs) -> int: return x + y sig = inspect.signature(add) print(sig) # (x: int, y: int, *args, **kwargs) -> int print(sig.parameters) # OrderedDict([('x', <Parameter "x: int">), ('y', <Parameter "y: int">), ('args', <Parameter "*args">), ('kwargs', <Parameter "**kwargs">)]) # 示例2: partial偏函數(shù) from functools import partial def add(x, y): return x + y partial_add = partial(add, x=1) result = partial_add(y=2) print(result) #輸出: 3 # lru_cache from functools import lru_cache import time @lru_cache() def add(x, y): time.sleep(10) return x + y print(add(1,2)) print(add(2,3)) print(add(2,3)) print(add(2,3))
指那些作用于函數(shù)或者返回其它函數(shù)的函數(shù),通常只要是可以被當(dāng)做函數(shù)調(diào)用的對(duì)象就是這個(gè)模塊的目標(biāo);
lru_cache裝飾器的作用就是把計(jì)算結(jié)果保存在內(nèi)存中,下一次有同一個(gè)參數(shù)傳入的話就不會(huì)再次進(jìn)行計(jì)算;
上述內(nèi)容就是Python中怎么實(shí)現(xiàn)參數(shù)注解,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。