일반적으로 inspect
은 좋은 대답이지만, 클래스 (따라서 클래스 메서드)가 인터프리터에 정의되어 있으면 평평하게됩니다.
을 dill
에서 사용하면 대화식으로 정의 된 경우에도 함수와 lambda의 소스를 가져올 수 있습니다. 또한 카레에 정의 된 바운드 또는 언 바운드 클래스 메서드 및 함수에서 코드를 가져올 수 있지만 둘러싸는 객체 코드없이 해당 코드를 컴파일하지 못할 수도 있습니다. 당신은 여전히에서 제안으로 (에서 소스 코드 파일을 열 좋아하는 편집기를 사용하여에 의지가 없을 수 있습니다
builtin
함수 또는 메소드에 대한
>>> 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
>>>
는 dill.source
는 ... 그러나 ... 작동하지 않습니다 다른 답변들). builtins
에 대한 소스를 볼 수 있다고 주장하는 cinspect
이라는 새 패키지가 있습니다.
변수 'next'는 내장 'next'를 음영 처리하므로 'next'변수를 호출하지 마십시오. – Matthias
@Matthias, 감사합니다. –