Для модулей, классов, функций и нескольких других объектов вы можете использовать inspect.getfile
или inspect.getsourcefile
. Однако для встроенных объектов и методов это приведет к TypeError
. Как полагают C0deH4cker, встроенные объекты и методы реализованы на C, поэтому вам нужно будет просмотреть исходный код C. isdigit
- метод встроенного строкового объекта, который реализован в файле stringobject.c
в каталоге Objects
исходного кода Python. Этот метод isdigits
реализуется из строки 3392 этого файла. См. Также мой ответ здесь на аналогичный, но более общий вопрос.
Метод isdigit()
, о котором вы говорите, является встроенным методом встроенного типа данных. Смысл, источник этого метода написан на C, а не на Python. Если вы действительно хотите увидеть исходный код, я предлагаю вам перейти на http://python.org и загрузить исходный код Python.
Хотя я обычно соглашался с тем, что inspect
является хорошим ответом, он падает, когда ваш класс (и, следовательно, метод класса) был определен в интерпретаторе.
Если вы используете dill.source.getsource
из dill
вы можете получить источник функций и лямбда, даже если они определены интерактивно. Он также может получить код для связанных или несвязанных методов и функций класса, определенных в карри ... однако вы не сможете скомпилировать этот код без кода объекта-объекта.
>>> from dill.source import getsource
>>>
>>> def add(x,y):
... return x+y
...
>>> squared = lambda x:x**2
>>>
>>> print getsource(add)
def add(x,y):
return x+y
>>> print getsource(squared)
squared = lambda x:x**2
>>>
>>> class Foo(object):
... def bar(self, x):
... return x*x+x
...
>>> f = Foo()
>>>
>>> print getsource(f.bar)
def bar(self, x):
return x*x+x
>>>
Для builtin
, функции dill.source
не будут работать ... HOWEVER ...
Вам все равно не придется прибегать к использованию вашего любимого редактора, чтобы открыть файл с исходным кодом (как это предлагается в других ответах) ). Существует новый пакет под названием cinspect
, целью которого является просмотр источника для builtins
.
Вы можете попробовать распечатать method.__doc__
для документации по этому конкретному методу. Если вам просто интересно, вы можете проверить свой PYTHONPATH, чтобы узнать, откуда импортированы ваши модули, и посмотреть, не найден ли файл .py из этого модуля
next.isdigit()
?
– swoopin_swallow
28 June 2012 в 23:53