Python 自定義函式的特殊屬性(收藏專用)

發表於2016-06-13

Python 中通過函式定義所建立的使用者自定義函式物件均具有一些特殊屬性,需要注意的是這裡介紹的是自定義函式(function型別)的特殊屬性,而非方法(method 型別)的特殊屬性,函式和方法的特熟屬性以及預設的返回值可能不盡相同。

對於大多數特殊屬性,可以通過下面這個例子示範一下:

首先看一下方法與函式的區別:例項的函式為bound method,而類的函式以及閉包均為function,需要強調的是 Python 2.x 中類的函式為unbound method,這點與Python 3.x 有所不同,本文則基於 Python 3.51 整理。

__doc__

可寫;用於獲取函式的文件說明,如果沒有,則返回 None

__name__

可寫;獲取函式的名稱。

__qualname__

可寫;獲取函式的qualname:點示法顯示函式名稱、所在的類、模組等梯級地址。

__module__

可寫;返回函式所在的模組,如果無則返回None

__defaults__

可寫;以元組的形式返回函式的預設引數,如果無預設引數則返回None

__code__

可寫;返回已編譯的函式物件。

__globals__

只讀,以字典的形式返回函式所在的全域性名稱空間所定義的全域性變數。

__dict__

可寫;以字典的形式返回名稱空間所支援的任意自定義的函式屬性。

__closure__

只讀;以包含cell的元組形式返回閉包所包含的自由變數。

__annotations__

可寫;具體詳見“Python 的函式註釋

__kwdefaults__

可寫,具體詳見 “Python 的 Keyword-Only Arguments(強制關鍵字引數)

相關文章