2015-08-14 31 views
1

我對python相當陌生,所以這可能是一個明顯的問題,但我到處搜索(包括文檔),並且我似乎無法獲取python中內置函數的代碼對象。舉例來說,在我的PyCharm編輯,當我輸入這個代碼,它沒有檢測到任何錯誤:爲什麼不Python的內置函數有代碼的對象?

print(getattr.__code__) 

但是當我運行它,它提供了一個AttributeError:

AttributeError: 'builtin_function_or_method' object has no attribute '__code__' 

是否有一個原因爲什麼python中的內置函數沒有代碼對象,並且這是我的IDE中的一個錯誤?

我使用Python 3

+0

要檢測IDE將不得不執行代碼的錯誤。它不知道代碼是否具有破壞性,所以不會這樣做。 –

+0

但隨後將在「builtin_function_or_method」仍然有一個代碼對象? – pasghetti

+1

如果對象是用C語言實現那麼它不具有一個'__code__'屬性。許多內置插件是C. –

回答

4

內置函數沒有代碼的對象,因爲它們使用C:導入,而不是在Python。只有Python函數具有代碼對象,因爲代碼對象是編譯Python的字節碼。 Exploring Python Code Objects是代碼對象的很好的解釋。

+0

感謝您的鏈接和簡要說明。 – pasghetti

相關問題