由于函數是對象,所以函數比我們所預料的更靈活。例如,一旦我們創建一個函數,可以像往常一樣調用它:
>>>def func(a):
... b = 'spam'
... return b * a
...
>>>func(8)
'spamspamspamspamspamspamspamspam'
我們也可以通用地檢查它們的屬性(如下代碼在Python 3.0中運行,但是Python 2.6中的結果是類似的):
>>>func.__name__
'func'
>>>dir(func)
['__annotations__','__call__','__class__','__closure__','__code__',
...more omitted...
'__repr__','__setattr__','__sizeof__','__str__','__subclasshook__']
其中一些屬性還提供了函數的本地變量和參數等方面的細節:
>>>func.__code__
>>>dir(func.__code__)
['__class__','__delattr__','__doc__','__eq__','__format__','__ge__',
...more omitted...
'co_argcount','co_cellvars','co_code','co_consts','co_filename',
'co_firstlineno','co_flags','co_freevars','co_kwonlyargcount','co_lnotab',
'co_name','co_names','co_nlocals','co_stacksize','co_varnames']
>>>func.__code__.co_varnames
('a','b')
>>>func.__code__.co_argcount
1
工具編寫者可以利用這些信息來管理函數。
函數對象不僅限于前面列出的系統定義的屬性。我們也可以向函數附加任意的用戶定義的屬性:
>>>func
>>>func.count = 0
>>>func.count += 1
>>>func.count
1
>>>func.handles = 'Button-Press'
>>>func.handles
'Button-Press'
>>>dir(func)
['__annotations__','__call__','__class__','__closure__','__code__',...more omitted...
__str__','__subclasshook__','count','handles']
這樣的屬性可以用來直接把狀態信息附加到函數對象,而不必使用全局、非本地和類等其他技術。和非本地不同,這樣的屬性可以在函數自身的任何地方訪問。從某種意義上講,這也是模擬其他語言中的“靜態本地變量”的一種方式——這種變量的名稱對于一個函數來說是本地的,但是,其值在函數退出后仍然保留。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
編程語言
+關注
關注
10
文章
1955
瀏覽量
36193
-
函數
+關注
關注
3
文章
4372
瀏覽量
64299
-
python
+關注
關注
56
文章
4825
瀏覽量
86275
發布評論請先 登錄
相關推薦
熱點推薦
Python機器學習入門之pandas的使用提示
系列文章目錄提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加例如:第一章 Python 機器學習入門之pandas的使用提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助
發表于 08-13 07:36
python類的多態和類的property屬性
property ,其實是 Python 中一個內置的裝飾器,它可以在新式類中把一個函數 改造 成屬性。當你讀取屬性值時,會進入被 property 裝飾的
發表于 03-09 16:38
python基礎教程實例之python基礎入門100例程序分享
包含了100個python入門的小例子,包括了基礎語法,數據結構,控制流,類繼承等基礎知識的訓練和,很適合入門的同學鞏固基礎知識。
發表于 09-08 17:17
?51次下載
簡述python空類和實例屬性賦值
python類主體沒有任何內容,只有pass語句,稱為空類。
## 1.2 obj.attr屬性賦值
通過obj.attr=value進行類和實例屬性賦值。
Python系列學習筆記之函數注解
在Python 3.0中,可以給函數對象附加注解信息。這些信息會附加到函數對象的__annotations__屬性。
如下是一個不帶注解的函數
Python 函數參數分類
今天給大家分享一下自己整理的一篇 Python 參數的內容,內容非常的干,全文通過案例的形式來理解知識點,自認為比網上 80% 的文章講的都要明白,如果你是入門不久的 python 新手,相信本篇
評論