1. 參數注解
當寫好一個函數以后,想為這個函數的參數添加一些額外的信息,這樣的話,其他的使用者就可以清楚的知道這個函數應該怎么使用,這個時候可以使用函數參數注解。
函數參數注解能提示程序員應該怎樣正確使用這個函數。
比如,下面這個函數就是一個被注解了的函數:
def add(x:int, y:int) -> int: return x + y
Python解釋器不會對這些注解添加任何的語義。
它們不會被類型檢查,運行時跟沒有加注解之前的效果也沒有任何的差距。
但是,對於那些閱讀代碼的人來說,就有很大的幫助。
第三方工具和框架可能會對這些注解添加語義,同時它們也會出現在文檔中。
def add(x:int, y:int) -> int: return x + y help(add)
執行結果為:
Help on function add in module __main__: add(x:int, y:int) -> int
你可以使用任意類型的對象給函數添加注解(例如數字,字符串,對象實例等等), 但是使用類或者字符串會比較好。
2. annotations
函數的注解只存儲在函數的__annotations屬性中。例如:
def add(x:int, y:int) -> int: return x + y print(add.__annotations__)
執行結果為:
{'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}
盡管注解的使用方法可能會有很多中,但是它們的主要用途還是文檔。
因為Python並沒有類型聲明,通常來講僅僅通過閱讀源碼很難知道應該傳遞什么樣的參數給這個函數。
而使用函數注解就能給代碼閱讀人員更多的提示,讓他們可以更好的使用函數。