2012-09-20 3 views
5

충분한 문서가없는 제 3 자 라이브러리 (패키지 및 모듈)를 사용하는 경우가 종종 있습니다. 그러므로 소스 코드를 연구하는 것은 필수적이지만 약간 지루한 작업이 될 수도 있습니다. 나는 (모두들 추측 하듯이) dir()help() 함수를 사용하여 시작했으며 최근에는 inspect 모듈을 사용하기 시작했습니다. 나쁘게 문서화 된 코드로 다이빙하는 데 사용하는 "방법"과 효율성 향상 방법을 알고 싶습니다. 많은 도움을 주셨습니다.Python : 실용적인 내성

답변

5

나는 IPython이 이런 종류의 작업에 없어서는 안될 것으로 본다. ? (show docstring)과 ?? (show source) 매직 명령은 IPython의 뛰어난 완성 시스템과 라이브 오브젝트 인트로 스펙 션과 함께 실제적으로 저를 변화시킵니다.

예 세션 :

In [1]: import sphinx.writers <TAB> 
# see available modules and packages - narrow down 

In [1]: import shpinx.writers.manpage as manpage 
In [2]: manpage.<TAB> 
# list and complete on the module's contents 

In [3]: manpage.Writer? 
# nicely formatted docstring follows 

In [4]: manpage.Writer?? 
# nicely formatted source code follows 

In [5]: %edit manpage 
# open module in editor 
# it really helps if you use something like ctags at this point 

In [6]: %edit manpage.Writer 
# open module in editor - jump to class Writer 

불행히도, 모든 코드는이 방법을 검사 할 수 있습니다. 프로젝트는 if __name__ == '__main__'에 포장하거나 모듈화 된 코드로을 수행하거나 프로젝트에 집중적으로 의존하는 프로젝트 (sh)를 생각해보십시오.

+1

@ gvalkov - +1 for IPython. – root

2

http://pycallgraph.slowchop.com/ 또는 doxygen으로 콜 그래프를 구성하고 싶습니다.

실제로, AST 모듈 및 일부는 상대적으로 고통없는 통계 분석을 허용합니다. 필자가 더 원하는 것은 역학 분석을 수행하는 것입니다. 왜냐하면 "func1"이라는 값이 바뀌고 호출이 완전히 달라질 수 있기 때문입니다.

+0

@ Bob - + 1, 그것에 대해 듣지 못했지만 흥미로운 것 같습니다. 감사. – root

+0

@root : 문제는 그 통계적 콜 그래프가 파이썬과 같이 역동적 인 언어에 충분하지 않을 수 있다는 것입니다. –