Как найти расположение исходного кода встроенного метода Python?

Есть много встроенных методов Python, которые я хотел бы изучить исходный код для понимания. Как найти свое местоположение на моем компьютере? Есть ли какая-то простая команда, которую я мог бы запустить либо в сценарии Python, либо в моем терминале на моем Linux, который я мог бы использовать, чтобы найти исходный файл встроенного метода?

2 Solutions collect form web for “Как найти расположение исходного кода встроенного метода Python?”

Обычно вы можете найти исходные файлы для базовых модулей python в самой папке установки python. Например, в linux я могу найти исходный код для os модуля, который является довольно популярным модулем python в этом месте:

 /usr/lib/python2.7/os.py 

Если вы находитесь в windows , это обычно C:\python27\lib , но вы можете проверить его для себя, запустив which python в случае linux и where python в случае windows .

Чтобы получить местоположение файла Python с терминала:

 $ which python 

Но вы можете увидеть исходный код функции, просто добавив ее с помощью ?? (обратите внимание, что некоторые функции скомпилированы и не записаны на Python).

Например:

 # Example 1: Built in compiled function. >>> open?? Docstring: open(name[, mode[, buffering]]) -> file object Open a file using the file() type, returns a file object. This is the preferred way to open a file. See file.__doc__ for further information. Type: builtin_function_or_method # Example 2: Pandas function written in Python. import pandas as pd >>> pd.DataFrame?? Init signature: pd.DataFrame(self, data=None, index=None, columns=None, dtype=None, copy=False) Source: class DataFrame(NDFrame): """ Two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns). Arithmetic operations align on both row and column labels. Can be thought of as a dict-like container for Series objects. The primary pandas data structure Parameters ---------- data : numpy ndarray (structured or homogeneous), dict, or DataFrame Dict can contain Series, arrays, constants, or list-like objects index : Index or array-like Index to use for resulting frame. Will default to np.arange(n) if no indexing information part of input data and no index provided columns : Index or array-like Column labels to use for resulting frame. Will default to np.arange(n) if no column labels are provided dtype : dtype, default None Data type to force, otherwise infer copy : boolean, default False Copy data from inputs. Only affects DataFrame / 2d ndarray input Examples -------- >>> d = {'col1': ts1, 'col2': ts2} >>> df = DataFrame(data=d, index=index) >>> df2 = DataFrame(np.random.randn(10, 5)) >>> df3 = DataFrame(np.random.randn(10, 5), ... columns=['a', 'b', 'c', 'd', 'e']) See also -------- DataFrame.from_records : constructor from tuples, also record arrays DataFrame.from_dict : from dicts of Series, arrays, or dicts DataFrame.from_items : from sequence of (key, value) pairs pandas.read_csv, pandas.read_table, pandas.read_clipboard """ @property def _constructor(self): return DataFrame _constructor_sliced = Series @property def _constructor_expanddim(self): from pandas.core.panel import Panel return Panel ... 
  • Python: try-except как выражение?
  • urllib.unquote_plus (s) не конвертирует символ плюс в космос
  • Построение списка месяцев путем итерации между двумя датами в списке (Python)
  • Аргументы Python: Image.frombytes ()
  • Динамически вызывающие функции - Python
  • Проект Эйлера №3 в Python
  • Когда chr (ord (c)) не равно c в Python?
  • Можно использовать более одного аргумента на __getitem__?
  • Python - лучший язык программирования в мире.