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