本篇文章為大家展示了Python中如何使用函數對象,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Python是如何工作的?
我們將從高層開始了解python的內部工作。你在你的python REPL里執行一行代碼之后,它是如何工作的呢?
~ $ python Python 2.7.2 (default, Jun 20 2012, 16:23:33) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> a = "hello"
當你敲下return鍵的時候,python完成了以下四步:詞法分析、句法分析、編譯、解釋。詞法分析的工作就是將你剛才輸入的那行代碼分解為一些符號token(譯者注:包括標示符,關鍵字,數字, 操作符等)。句法分析程序再接收這些符號,并用一種結構來展現它們之間的關系(在這種情況下使用的抽象語法樹)。然后編譯器接收這棵抽象語法樹,并將它轉化為一個(或多個)代碼對象。***,解釋器逐個接收這些代碼對象,并執行它們所代表的代碼。
主要是因為我現在對這些步驟一竅不通,所以我并不打算詳解詞法分析、句法分析和編譯。但是,我們假設這些步驟都正常運行,并且能夠提供給解釋器一個合適的python代碼對象來完成解釋工作。
在我們談論代碼對象之前,我想先解答一些常見的疑惑。我們將在這個系列文章中講解函數對象、代碼對象以及字節碼。它們是 完全不同的概念。我們就從函數對象談起吧。雖然我們不需要了解函數對象到達解釋器的過程,但是我想強調函數對象和代碼對象是截然不同的(另外,函數對象超 棒?。?。
函數對象
你也許對“函數對象”早有耳聞。當談到“函數是***的對象”或者“Python有著最棒的函數”時,人們總會提起它。那我們就來看一個函數對象吧。
>>> def foo(a): ... x = 3 ... return x + a ... >>> foo <function foo at 0x107ef7aa0>
“函數是***的對象”說明函數是一種對象。它就如同一個列表或者舉個例子來說 :MyObject 就是一個對象。既然 foo 是一個對象,那么我們就能在不調用它的情況下使用它(也就是說,foo 和 foo() 是大相徑庭的)。我們能夠將 foo 當作一個參數傳遞 給另一個函數或者賦值給一個新函數名( other_function = foo )。有了如此棒的函數,一切皆為可能!
在第二部分,我們將著眼于下一層次——代碼對象。
上述內容就是Python中如何使用函數對象,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。