顯示物件的原始碼

不是內建的物件

要列印 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'>