回答增加更多信息比vaultah提供的愚蠢目標。
下面的答案直接解決了3.x,我注意到你仍然在2.x.對此有一個很好的說明,看看這個answer。
你實際上在這方面走的是正確的道路,但問題是,print
是一個內置的,所以inspect.getsource
不會在這裏很好。
這就是說:
>>> inspect.getsource.__doc__
'Return the text of the source code for an object.
The argument may be a module, class, method, function, traceback, frame,
or code object. The source code is returned as a single string. An
OSError is raised if the source code cannot be retrieved.'
,並在那裏爲print
是type
:
>>> type(print)
<class 'builtin_function_or_method'>
更具體地說:
>>> print.__module__
'builtins'
多麼不幸,它不是由getsource
支持。
你必須選擇:
1)通過Python source code走,看看你的內置已經實施。就我而言,我幾乎總是使用CPython,所以我從CPython directory開始。
由於我們知道我們正在尋找builtin
模塊,因此我們進入/Python
目錄,並尋找看似包含內置模塊的東西。 bltinmodule.c
是一個安全的猜測。由於知道打印必須被定義爲可被調用的功能,因此請搜索print(
,然後我們右跳到builtin_print(Pyobject...定義的位置。
2)猜測內置函數名稱慣例並在代碼回購中搜索builtin_print
。
3)使用一種可以在幕後執行魔法的工具,例如Puneeth Chaganti的Cinspect。
不,因爲'print'是一個用C編寫的函數,'inspect'只能得到Python函數的源碼。 – vaultah
您知道python是開源的,因此整個源代碼都可以在線獲得,對嗎?你可以從存儲庫直接獲取它,而不是使用'inspect'(這引發了語法錯誤,因爲'print'是python 2中的一個語言關鍵字,而不是python 3中的函數)。 – l4mpi
@ l4mpi雅,我知道python是開源的。所以只有我試圖查看打印的源代碼。 – Venkatesh