시스템에 파이썬 모듈이 설치되어 있는데 이 모듈에서 어떤 함수/클래스/메서드를 사용할 수 있는지 확인하고 싶습니다.
각각에 대해 문서 함수를 호출하고 싶습니다. 루비에서는 ClassName.methods와 같은 작업을 수행하여 해당 클래스에서 사용 가능한 모든 메서드 목록을 가져올 수 있습니다. 파이썬에도 비슷한 것이 있나요?
예를 들어:
from somemodule import foo
print foo.methods # or whatever is the correct method to call
inspect][1] 모듈. 대화형 인터프리터의 [
pydoc][2] 모듈,
help()함수 및 원하는 문서를 생성하는
pydoc` 명령줄 도구도 참조하세요. 문서를 보고자 하는 클래스를 지정하기만 하면 됩니다. 예를 들어 HTML 출력을 생성하여 디스크에 쓸 수도 있습니다.
예를 들어 있는 검사:
from inspect import getmembers, isfunction
from my_project import my_module
functions_list = [o for o in getmembers(my_module) if isfunction(o[1])]
제멤버스 목록을 되돌려줍니다 (object_name, object_type) 튜플을.
다른 모든 기능을 갖춘 이스스 inspect 모듈에서는 이펑크션 바꿀 수 있습니다.
예를 들어, 사용자가 선택 기능을 통해 만들어진 패키지 기술입니까 진입점이 I& # 39 m, 치프라프. 실행 코드를 사용하여 '와' 조사 '위험' 가져오기의 방황케 인쇄했습니다 아웃하거나 GUI 설치 및 메시지 등 충돌, 도움말에서는 기술입니까 터지는 대화상자의 드릴링됩니다.
[Ast] [2] 내가 아닌 모든 모듈을 사용하여 나열하십시오 최상위 기능:
import ast
import sys
def top_level_functions(body):
return (f for f in body if isinstance(f, ast.FunctionDef))
def parse_ast(filename):
with open(filename, "rt") as file:
return ast.parse(file.read(), filename=filename)
if __name__ == "__main__":
for filename in sys.argv[1:]:
print(filename)
tree = parse_ast(filename)
for func in top_level_functions(tree.body):
print(" %s" % func.name)
'List.py' 과 이 코드를 사용하여 입력, 자신을 얻을 수 있다.
$ python list.py list.py
list.py
top_level_functions
parse_ast
물론 까다로운 대해서도 같은 비교적 간단한 언어를 할 수 있는 AST 탐색, 파이썬, AST 때문에 때때로 매우 낮은 수준. 하지만, # 39 의 경우 단순 명쾌하다 览侩 荤례 it& 및 금고에도요 모두 가능합니다.
하지만, 부각, t 자 can& # 39 와 같은 런타임 시 생성되는 함수를 람다 (λ) = 'foo 탐지합니다 x, y: * '.
[2]: https://docs.python.org/3.2/library/ast.html # 모듈에서는 ast
코드 구문 분석, 나는 이 방식이 @csl ast 기반 추천합니까 강조표시할 하지 않는 이상.
다른 모든 경우에는 inspect 모듈에서는 정확합니다.
import inspect
import <module_to_inspect> as module
functions = inspect.getmembers(module, inspect.isfunction)
이 목록을 보기입니다 2 튜플을 형태로 ' [(< name:str> value:function> <;;;).]'.
간단한 설명을 하는 것이 아니라 직접 호출할 수 있는 다양한 분야의 대응 및 위에 오토메이티드 내비쳤다.
'디렉터 (모듈)' 은 인터프리터를 사용할 때, 또는 표준 스크립트입니다 표준 방식을 설명한 것처럼 대부분의 분입니다.
그러나 파이썬 쉘로 상호대화식 함께 같은 [이피통] (http://ipython.org) 에 정의된 모든 오브젝트도 개요입니다 모듈에서는 afaq 탭 완성 사용할 수 있습니다. 이것은, 사용하는 것보다 훨씬 더 편리하게 확인할 수 있습니다 '와' 스크립트입니다 인쇄하십시오 모듈에서는 정의되어 있습니다.
'디렉터 () 는 명령' 의 글로벌 기능을 사용할 수 있지만 이 모두 열거합니다 (언급한 이들 중 대부분은 대답) 기능 및 비공개 기능을 함께 했다.
예를 들어 실행:
>>> import re
>>> dir(re)
다음과 같은 기능을 되돌려줍니다 / classes
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
일반적으로 몇 가지 않는 것이 일반적인 프로그래밍 사용 (단, 모듈에서 자체를 둥더리아지스 doc file 'e', 'like' 의 경우는 제외). 따라서 국민 모두와 수준들과 나열하십시오 유용하게 쓰일 수 없습니다. (이는 무얼 어떻게 사용할 때 얻을 수 있다 '에서 모듈에서는 가져오기의 *').
이런 문제를 해결하기 위해 정보기술 (it) '' all 사용할 수 있는 모든 국민이 바뀌엇어요 되돌려줍니다 함수와 클래스가 모듈 (밑줄 - ' _' 시작하여 그 않음). 지켜보리니 'https://stackoverflow.com/questions/44834/can-someone-explain-all-in-python' all 사용할 수 있다.
예를 들어보겠습니다.
>>> import re
>>> re.__all__
['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', 'purge', 'template', 'escape', 'error', 'A', 'I', 'L', 'M', 'S', 'X', 'U', 'ASCII', 'IGNORECASE', 'LOCALE', 'MULTILINE', 'DOTALL', 'VERBOSE', 'UNICODE']
>>>
그 모든 함수와 클래스가 있는 밑줄 분리되었는지 확인란만 통해 사용할 수 있고 따라서 임포트합니다 public 으로 정의됩니까 '*'.
참고로, '정의' all 것만은 아니다. 후 한 '아트리부텔라로 별매입니다 경우' 는 주장이 제기됐다.
이 경우 ast 모듈에서는 함께 있다.
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>
아무도 없는 경우 이러한 의견은 작동합니까 가져오기할 파이썬 파일 없이 가져오기의 오류뿐만 것 "이라고 말했다. 당시 이 사건을 조사하고 있는 큰 코드 기반 파일 가져다줄래요 어렸을 때 많은 종속물과의 비롯됩니다. 다음 시작하는 모든 파일을 처리하는 것으로, 메소드 이름을 " def" 텍스트로 검색합니다. 인쇄 및 해당 키프레임과 그 줄 번호.
import re
pattern = re.compile("def (.*)\(")
for i, line in enumerate(open('Example.py')):
for match in re.finditer(pattern, line):
print '%s: %s' % (i+1, match.groups()[0])
그러나 디렉터 (모듈) 또는 도움말에서는 언급된 답변 (모듈) 이전, br> try:< 수도 있습니다.
이 모든 기능이 하시리브 모듈에서는 스니핏 목록
(C:\Program Files\Anaconda2) C:\Users\lenovo>ipython
Python 2.7.12 |Anaconda 4.2.0 (64-bit)| (default, Jun 29 2016, 11:07:13) [MSC v.1500 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import hashlib
In [2]: hashlib.
hashlib.algorithms hashlib.new hashlib.sha256
hashlib.algorithms_available hashlib.pbkdf2_hmac hashlib.sha384
hashlib.algorithms_guaranteed hashlib.sha1 hashlib.sha512
hashlib.md5 hashlib.sha224
이렇게 하면 목록에 있는 모든 기능을 덮어쓰기/추가 your_module 정의되어 있다.
result=[]
for i in dir(unit8_conversion_methods):
if type(getattr(your_module, i)).__name__ == "function":
result.append(getattr(your_module, i))