床長(zhǎng)人工智能教程免費(fèi)擴(kuò)展206
朋友們,如需轉(zhuǎn)載請(qǐng)標(biāo)明出處:[https://blog.csdn.net/jiangjunshow](https://blog.csdn.net/jiangjunshow)
聲明:在人工智能技術(shù)教學(xué)期間,不少學(xué)生向我提一些python相關(guān)的問題,所以為了讓同學(xué)們掌握更多擴(kuò)展知識(shí)更好地理解AI技術(shù),我讓助理負(fù)責(zé)分享這套python系列教程,希望能幫到大家!由于這套python教程不是由我所寫,所以不如我的AI技術(shù)教學(xué)風(fēng)趣幽默,學(xué)起來比較枯燥;但它的知識(shí)點(diǎn)還是講到位的了,也值得閱讀!想要學(xué)習(xí)AI技術(shù)的同學(xué)可以點(diǎn)擊跳轉(zhuǎn)到我的[教學(xué)網(wǎng)站](https://www.captainbed.net/csdn)。PS:看不懂本篇文章的同學(xué)請(qǐng)先看前面的文章,循序漸進(jìn)每天學(xué)一點(diǎn)就不會(huì)覺得難了!
在Python 3.0中,可以給函數(shù)對(duì)象附加注解信息。這些信息會(huì)附加到函數(shù)對(duì)象的__annotations__屬性。
如下是一個(gè)不帶注解的函數(shù),它編寫為帶有3個(gè)參數(shù)并且返回一個(gè)結(jié)果:
```
>>>def func(a,b,c):
...? ? return a + b + c
...
>>>func(1,2,3)
6
```
從語(yǔ)法上講,函數(shù)注解編寫在def頭部行。對(duì)于參數(shù),它們出現(xiàn)在緊隨參數(shù)名之后的冒號(hào)之后;對(duì)于返回值,它們編寫于緊跟在參數(shù)列表之后的一個(gè)->之后。例如,這段代碼,注解了前面函數(shù)的3個(gè)參數(shù)及其返回值:
```
>>>def func(a: 'spam',b: (1,10),c: float) -> int:
...? ? return a + b + c
...
>>>func(1,2,3)
6
```
Python將注解信息收集到字典中并且將它們附加給函數(shù)對(duì)象自身。參數(shù)名變成鍵,如果編寫了返回值注解的話,它存儲(chǔ)在鍵“return”下:
```
>>>func.__annotations__
{'a': 'spam','c': <class 'float'>,'b': (1,10),'return': <class 'int'>}
```
下面的例子只是注解了3個(gè)參數(shù)中的兩個(gè):
```
>>>def func(a: 'spam',b,c: 99):
...? ? return a + b + c
...
>>>func(1,2,3)
6
>>>func.__annotations__
{'a': 'spam','c': 99}
>>>for arg in func.__annotations__:
... print(arg,'=>',func.__annotations__[arg])
...
a => spam
c => 99
```
如果編寫了注解的話,仍然可以對(duì)參數(shù)使用默認(rèn)值——注解出現(xiàn)在默認(rèn)值之前。例如,下面的a: 'spam' = 4意味著參數(shù)a的默認(rèn)值是4,并且用字符串'spam'注解它:
```
>>>def func(a: 'spam' = 4,b: (1,10) = 5,c: float = 6) -> int:
...? ? return a + b + c
...
>>>func(1,2,3)
6
>>>func()? ? ? ? ? ? ? ? # 4 + 5 + 6 (all defaults)
15
>>>func(1,c=10)? ? ? ? ?# 1 + 5 + 10 (keywords work normally)
16
>>>func.__annotations__
{'a': 'spam','c': <class 'float'>,'b': (1,10),'return': <class 'int'>}
```