在Python 3.0中,可以給函數(shù)對象附加注解信息。這些信息會附加到函數(shù)對象的__annotations__屬性。
如下是一個不帶注解的函數(shù),它編寫為帶有3個參數(shù)并且返回一個結果:
def func(a,b,c):
... return a + b + c
...
func(1,2,3)
6
從語法上講,函數(shù)注解編寫在def頭部行。對于參數(shù),它們出現(xiàn)在緊隨參數(shù)名之后的冒號之后;對于返回值,它們編寫于緊跟在參數(shù)列表之后的一個->之后。例如,這段代碼,注解了前面函數(shù)的3個參數(shù)及其返回值:
def func(a: 'spam',b: (1,10),c: float) -> int:
... return a + b + c
...
func(1,2,3)
6
Python將注解信息收集到字典中并且將它們附加給函數(shù)對象自身。參數(shù)名變成鍵,如果編寫了返回值注解的話,它存儲在鍵“return”下:
func.annotations
{'a': 'spam','c':
下面的例子只是注解了3個參數(shù)中的兩個:
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
如果編寫了注解的話,仍然可以對參數(shù)使用默認值——注解出現(xiàn)在默認值之前。例如,下面的a: 'spam' = 4意味著參數(shù)a的默認值是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':
-
函數(shù)
+關注
關注
3文章
4331瀏覽量
62622 -
python
+關注
關注
56文章
4797瀏覽量
84690 -
注解
+關注
關注
0文章
18瀏覽量
2675
發(fā)布評論請先 登錄
相關推薦
評論