충분한 문서가없는 제 3 자 라이브러리 (패키지 및 모듈)를 사용하는 경우가 종종 있습니다. 그러므로 소스 코드를 연구하는 것은 필수적이지만 약간 지루한 작업이 될 수도 있습니다. 나는 (모두들 추측 하듯이) dir()
과 help()
함수를 사용하여 시작했으며 최근에는 inspect
모듈을 사용하기 시작했습니다. 나쁘게 문서화 된 코드로 다이빙하는 데 사용하는 "방법"과 효율성 향상 방법을 알고 싶습니다. 많은 도움을 주셨습니다.Python : 실용적인 내성
답변
나는 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)를 생각해보십시오.
http://pycallgraph.slowchop.com/ 또는 doxygen으로 콜 그래프를 구성하고 싶습니다.
실제로, AST
모듈 및 일부는 상대적으로 고통없는 통계 분석을 허용합니다. 필자가 더 원하는 것은 역학 분석을 수행하는 것입니다. 왜냐하면 "func1"이라는 값이 바뀌고 호출이 완전히 달라질 수 있기 때문입니다.
@ Bob - + 1, 그것에 대해 듣지 못했지만 흥미로운 것 같습니다. 감사. – root
@root : 문제는 그 통계적 콜 그래프가 파이썬과 같이 역동적 인 언어에 충분하지 않을 수 있다는 것입니다. –
@ gvalkov - +1 for IPython. – root