1
줄 번호와 모듈이 주어진 경우, 그 라인을 포함하고있는 모듈에서 함수의 이름을 되 찾는 일을하고 싶습니다. 파이썬에서 가능합니까?파이썬에서 라인을 포함하는 함수 얻기
줄 번호와 모듈이 주어진 경우, 그 라인을 포함하고있는 모듈에서 함수의 이름을 되 찾는 일을하고 싶습니다. 파이썬에서 가능합니까?파이썬에서 라인을 포함하는 함수 얻기
파이썬에서는이 작업을 수행 할 수있는 기본 제공 방법이 없습니다. 그러나 당신이 그런 일을 할 수있는 기능을 정의 할 수 있지만, 현재 디렉토리에있는 파일과 같은 모듈을 처리 할 것입니다 :
이import re
def get_function_name(module, line):
module_file = module.replace('.', '/') + '.py'
lines = open(module_file, 'r').xreadlines()
i = line - 1
try:
while i:
tmp = next(lines)
i -= 1
except StopIteration:
raise EOFError('Not enought lines in module %s' % module)
function_line = next(lines)
function_name = re.match('def (\w+)\([^)]*\):', function_line)
if function_name:
return function_name.group(1)
raise ValueError('No function declared on line %s' % line)
이 기능은 파일로 전달 된 모듈을 열 전달 라인에 도달 할 때까지 반복한다, 그런 다음 정규 표현식을 사용하여 함수의 이름을 검색합니다. 전달 된 행에 함수가 선언되지 않았거나 전달 된 행이 파일의 행 수를 초과하면 Error
이 발생합니다. 예 :
>>> get_function_name('my_module.my_submodule', 24)
'my_function_name'
>>> get_function_name('my_module.my_submodule', 25)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 15, in get_function_name
ValueError: No function declared on line 17
>>> get_function_name('my_module.my_submodule', 123456)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 10, in get_function_name
EOFError: Not enought lines in module
줄 번호? 나는 방법을 찾기 위해 라인 번호와 클래스를 통해 아무런 연결이 없다고 생각한다. – Efazati
무엇이든 가능하다. 하지만 더 중요한 것은 ... 왜 이걸하고 싶니? – jathanism
* 뭐든지 가능 * - 표창장이 필요합니다. – MattH