Python函數(shù)參數(shù)和注解的使用_第1頁
Python函數(shù)參數(shù)和注解的使用_第2頁
Python函數(shù)參數(shù)和注解的使用_第3頁
Python函數(shù)參數(shù)和注解的使用_第4頁
全文預覽已結(jié)束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第Python函數(shù)參數(shù)和注解的使用another_second不是僅限關鍵字參數(shù),而只是默認值參數(shù),因為它捕獲到了定位參數(shù)。

由此得知,定義僅限關鍵字參數(shù),必須把它放到*args參數(shù)后面,就像func函數(shù)一樣,反例是another_func函數(shù)。

還有第二個方法定義僅限關鍵字參數(shù),在簽名中放一個*:

deff(a,*,b):#b是僅限關鍵字參數(shù)

...returna,b

f(1,b=2)#只能傳關鍵字參數(shù)

(1,2)

f(1,2)#不能傳定位參數(shù)

Traceback(mostrecentcalllast):

File"input",line1,inmodule

TypeError:f()takes1positionalargumentbut2weregiven

f(1,2,3)#不能傳定位參數(shù)

Traceback(mostrecentcalllast):

File"input",line1,inmodule

TypeError:f()takes1positionalargumentbut3weregiven

僅限關鍵字參數(shù)不一定要有默認值,就像b一樣,強制必須傳入實參。

內(nèi)省中的函數(shù)參數(shù)

函數(shù)內(nèi)省的意思是說,當你拿到一個“函數(shù)對象”的時候,你可以繼續(xù)知道,它的名字,參數(shù)定義等信息。這些信息可以通過函數(shù)對象的屬性(一些雙下劃線的魔法方法)得到。

對于func函數(shù):

deffunc(first,*args,second="HelloWorld",**kwargs):

print(first)

print(second)

print(args)

print(kwargs)

和another_func函數(shù):

defanother_func(first,another_second="HelloWorld",*args,**kwargs):

print(first)

print(another_second)

print(args)

print(kwargs)

【__defaults__屬性】

元組,保存著定位參數(shù)和關鍵字參數(shù)的默認值。

print(func.__defaults__)#None

print(another_func.__defaults__)#('HelloWorld',)

【__kwdefaults__屬性】

字典,保存僅限關鍵字參數(shù)。

print(func.__kwdefaults__)#{'second':'HelloWorld'}

print(another_func.__kwdefaults__)#None

【__code__屬性】

code對象引用,code對象自身有很多屬性,其中包括參數(shù)名稱。

print(func.__code__.co_varnames)#('first','second','args','kwargs')

print(another_func.__code__.co_varnames)#('first','another_second','args','kwargs')

另外還可以使用inspect庫的signature方法來查看內(nèi)省中的函數(shù)參數(shù):

frominspectimportsignature

print(signature(func))

#(first,*args,second='HelloWorld',**kwargs)

框架和IDE等工具可以使用這些信息驗證代碼。

函數(shù)注解

如果刷過力扣算法題,那么對函數(shù)注解就不會陌生。比如:

defclip(text:str,max_len:'int0'=80)-str:

pass

參數(shù):后面是注解表達式,可以用來注解參數(shù)類型和約束。如果參數(shù)有默認值,注解放在參數(shù)名和=號之間。

可以在函數(shù)末尾的)和:之間添加-和注解表達式,來對返回值添加注解。

注解表達式可以是任何類型,最常用的類型是類(如str或int)和字符串(如'int0')。

函數(shù)注解只是個注解,Python對注解所做的唯一的事情是,把它們存入函數(shù)的__annotations__屬性中:

print(clip.__annotations__)

#{'text':class'str','max_len':'int0','return':class'str'}

Pytho

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論