vaultah가 제공 한 속임수 대상보다 많은 정보를 추가하려고하면 답이됩니다.
다음 답변은 3.x를 직접 처리하므로 아직 2.x에있는 것으로 나타났습니다. 좋은 글을 쓰려면 answer을 확인하십시오.
실제로이 문제에 대한 올바른 경로가 있지만 문제는 print
이 내장되어 있으므로 inspect.getsource
은 여기에서별로 도움이되지 않습니다. 이다
는 대답 :
>>> inspect.getsource.__doc__
'Return the text of the source code for an object.
The argument may be a module, class, method, function, traceback, frame,
or code object. The source code is returned as a single string. An
OSError is raised if the source code cannot be retrieved.'
어디를 print
이 type
입니다 같이 더 구체적으로
>>> type(print)
<class 'builtin_function_or_method'>
그리고 :
>>> print.__module__
'builtins'
얼마나 불행한,이 getsource
에 의해 지원되지 않는 .
당신은 옵션이 있습니다
1) Python source code을 통해 걸어와 내장이 구현 된 방법을 참조하십시오. 제 경우에는 거의 항상 CPython을 사용합니다. 따라서 CPython directory부터 시작하겠습니다.
우리가 builtin
모듈을 찾고 있다는 것을 알고 있기 때문에 /Python
dir에 들어가서 내장 모듈을 포함하고있는 것처럼 보입니다. bltinmodule.c
은 안전한 추측입니다. 해당 인쇄물을 호출 할 수있는 함수로 정의해야한다는 사실을 알고 print(
을 검색하면 정의 된대로 builtin_print(Pyobject...으로 바뀝니다.
2) 빌트인 함수 이름 규칙을 추측하고 builtin_print
을 코드 레포에서 검색하십시오.
3) Puneeth Chaganti의 Cinspect과 같이 장면 뒤에서 마술을하는 도구를 사용하십시오.
아니요,'print'는 C로 작성된 함수이기 때문에'inspect'는 파이썬 함수의 소스 만 가져올 수 있습니다. – vaultah
파이썬은 오픈 소스이므로 전체 소스 코드는 온라인에서 사용할 수 있다는 것을 알고 있습니까? 'inspect' (파이썬 2에서는'print'는 파이썬 2의 언어 키워드이므로 구문 오류가 발생합니다)를 사용하는 대신 저장소에서 바로 가져올 수 있습니다. – l4mpi
@ l4mpi 예, 저는 파이썬이 오픈 소스라는 것을 알고 있습니다. 그래서 저는 인쇄의 소스 코드를 보려고했습니다. – Venkatesh