python 自定義函式的屬性
阿新 • • 發佈:2019-01-11
名稱 | 型別 | 說明 | 改變 |
---|---|---|---|
__annotions __ | dict | 引數和返回值的註解,無,則空dict | 讀寫 |
__call __ | method-wrapper | 實現()運算子,即可呼叫物件協議 | 讀寫 |
__closure __ | tuple | 函式閉包,即自由變數的繫結(通常是None) | 只讀 |
__code __ | code | 編譯成位元組碼的函式元資料和函式定義體 | 讀寫 |
__defaults __ | tuple | 位置或關鍵字引數的任何預設值的元組,無,則是None | 讀寫 |
__get __ | method-wrapper | 實現只讀描述符協議 | 讀寫 |
__globals __ | dict | 函式所在模組中的全域性名稱空間 | 讀讀 |
__kwdefaults __ | dict | 僅限關鍵字形式引數的預設值,無,則是None | 讀寫 |
__name __ | str | 函式名稱 | 讀寫 |
__qualname __ | str | 函式的限定名稱,如Random.choice | 讀寫 |
__doc __ | str | 文件字串,不會被子類繼承,無,則是None | 讀寫 |
__code __本身就是一個物件,有15個屬性,列舉幾個常用的屬性
名稱 | 型別 | 說明 |
---|---|---|
co_argcount | int | 函式的位置引數和關鍵字引數的個數 |
co_kwonlyargcount | 元組 | 僅限關鍵字引數的個數 的元組 |
co_freevars | tupe | 自由變數名稱元組(通過函式的閉包引用) |
co_name | str | 用於定義此程式碼物件的名稱,即函式名 |
co_names | tupe | 區域性變數名稱的元組 |
co_nlocals | int | 區域性變數數 |
co_filename | str | 建立此程式碼物件的檔案的名稱 |
co_varnames | tuple | 引數和區域性變數的名稱的元組 |
def make_averager():
series = []
zz = 88
def averager(new_valuer=11,*,g=22,c=99):
print(zz)
series.append(new_valuer)
total = sum(series)
return total/len(series)
return averager
av = make_averager()
print(av.__code__)
<code object averager at 0x000002635A6A9030, file "D:/pythoncodesaveplace/TicTacToe/1.py", line 18>
print(av.__code__.co_argcount)
1 #指的是POSITIONAL_OR_KEYWORD
print(av.__code__.co_kwonlyargcount)
2 #指的是g,c引數
print(av.__code__.co_freevars)
('series','zz')
print(av.__code__.co_name)
averager
print(av.__code__.co_names)
('append', 'sum', 'len')
print(av.__code__.co_nlocals)
3 #指的是('new_valuer', 'g', 'total')這幾個變數
print(av.__code__.co_filename)
D:/pythoncodesaveplace/TicTacToe/1.py
print(av.__code__.co_varnames)
('new_valuer', 'g', 'total')
__closure __是元組,存放自由變數物件
av(10)
av(11)
print(av.__closure__)
(<cell at 0x000001A30D936618: list object at 0x000001A30D9EA548>,<cell at 0x000001A30D936648: int object at 0x00000000616071A0>)
print(av.__closure__[0])
<cell at 0x000001A30D936618: list object at 0x000001A30D9EA548>
print(av.__closure__[0].cell_contents)
[10,11]
print(av.__closure__[1])
<cell at 0x000001A30D936648: int object at 0x00000000616071A0>
print(av.__closure__[1].cell_contents)
88
defaults __ 指的是POSITIONAL_OR_KEYWORD引數的預設值
print(av.__defaults __)
(11,)
__kwdefaults __指的是KEYWORD_ONLY僅限關鍵字引數的預設值
print(av.__kwdefaults __)
{'g': 22,c=99}
__qualname __
print(av.___qualname_ __)
make_averager.<locals>.averager
__name __
print(av.___name_ __)
averager