顯示物件的原始碼
不是內建的物件
要列印 Python 物件的原始碼,請使用 inspect
。請注意,這不適用於內建物件,也不適用於互動式定義的物件。對於這些,你將需要稍後解釋的其他方法。
以下是如何從 random
模組列印方法 randint
的原始碼:
import random
import inspect
print(inspect.getsource(random.randint))
# Output:
# def randint(self, a, b):
# """Return random integer in range [a, b], including both end points.
# """
#
# return self.randrange(a, b+1)
只列印文件字串
print(inspect.getdoc(random.randint))
# Output:
# Return random integer in range [a, b], including both end points.
列印定義方法 random.randint
的檔案的完整路徑:
print(inspect.getfile(random.randint))
# c:\Python35\lib\random.py
print(random.randint.__code__.co_filename) # equivalent to the above
# c:\Python35\lib\random.py
物件以互動方式定義
如果以互動方式定義物件,則 inspect
無法提供原始碼,但你可以使用 dill.source.getsource
代替
# define a new function in the interactive shell
def add(a, b):
return a + b
print(add.__code__.co_filename) # Output: <stdin>
import dill
print dill.source.getsource(add)
# def add(a, b):
return a + b
內建物件
Python 內建函式的原始碼是用 c 編寫的,只能通過檢視 Python 的原始碼(在 Mercurial 上託管或從 https://www.python.org/downloads/source/下載 )來訪問 。
print(inspect.getsource(sorted)) # raises a TypeError
type(sorted) # <class 'builtin_function_or_method'>