簡體   English   中英

如何直接從IDE讀取Python源代碼

[英]How to read Python source code directly from IDE

我正在學習Python,我想通過閱讀源代碼深入了解python的工作原理。

我可以手動轉到安裝Python的目錄並查看源代碼

在此輸入圖像描述

我想知道,是否有可能直接從IDE中讀取Python源代碼,如PyCharm?

我試圖control click一個方法名稱,即使它確實將我帶到了方法定義頁面,它也沒有包含任何實現代碼

在此輸入圖像描述

編輯1

我理解在c中實現了大量的python(確切地說是cpython)。 無論如何都要讀取IDE中的c代碼,比如PyCharm?

正如你所說,一大塊python是用C語言編寫的,但這些包含在發行版中。 因此,您無法從IDE中讀取源代碼。 這些主要是編譯源,這意味着解釋器只使用字節碼。 並非所有函數都是用C語言編寫的,其中大部分都是用純python編寫的。

查看源的一種方法是使用ipython通過終端。

In [10]: import string
In [11]: string.lower??
Signature: string.lower(s)
Source:   
def lower(s):
    """lower(s) -> string

Return a copy of the string s converted to lowercase.

"""
return s.lower()
File:      /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/string.py
Type:      function

In [12]: import os

In [13]: os.system??
Docstring:
system(command) -> exit_status

Execute the command (a string) in a subshell.
Type:      builtin_function_or_method

或者,您可以使用inspect.getsource()找到所需內容。

import inspect
import os
print (inspect.getsource(os))
# You should see the source code here

如上例所示,這對某些內置函數不起作用。

要檢查用C編寫的內容,您應該使用另一種方法來檢查此鏈接該鏈接是python解釋器的官方存儲庫。 大多數對象類型都列在cpython/Objects文件夾中。 例如,這是C中列表對象的實現,對於內置模塊,請參考這個。

我相信這就是你想要的。 如果您需要幫助,請發表評論。

通常PyCharm可以做你想要的,除非Ctrl + Click引導你進入C函數。 在這種情況下,您將獲得關於函數簽名和返回值等的最少信息,就像您在帖子中顯示的那樣。 由於效率原因,內置函數主要用C語言編寫,所以如果你想查看C代碼,你必須下載CPython源代碼並深入研究它。 另一種方法是下載PyPy源代碼並查看它。 盡管如此,您仍然可以使用PyCharm從標准庫中用Python編寫的模塊中讀取代碼,這對您的學習過程很有幫助。 相信我,你會在那里找到優質的代碼。

我認為Python非常友好,因為它具有高度的封裝性。 也正是因為我們並不總是太關注底層實施,並提高我們的效率。 因此,您可以通過單擊方法名稱跳轉到方法定義頁面,並了解此頁面的代碼是否足夠。 除非你想參與Python語言本身的開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM