일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- office
- 비주얼베이직
- 파이썬GUI
- 파이썬3
- pythongui
- html
- windows
- Windows11
- 문자열
- Android
- python
- 아웃룩
- matlab
- 깃
- 오피스
- git
- python3
- Excel
- 파워포인트
- pandas
- win32com
- 파이썬
- Outlook
- VBA
- pyqt5
- 엑셀
- Windows10
- 윈도우10
- 안드로이드
- 윈도우11
Appia의 IT세상
파이썬[Python] C 소스 코드에 선언된 함수 정보 입력 인자, 리턴인자 정보 출력하기 본문
파이썬[Python] C 소스 코드에 선언된 함수 정보 입력 인자, 리턴인자 정보 출력하기
이전 포스팅에서는 C소스 코드를 바탕으로 선언된 함수에 대해서 출력하는 방법에 대해서 살펴봤습니다. 그 부분을 통해서, 선언된 원문, 그리고 함수의 이름등을 확인할 수 있었습니다. 그래서 이번 포스팅은 앞선 포스팅의 연장선상에서, 함수의 입력인자와 출력인자의 타입등의 정보와 함수이름을 출력하는 방법에 대해서 살펴보고자 합니다.
앞선 포스팅과 동일하게 다음 링크에 있는 예시 코드를 활용하여 사용하였습니다.
https://c.happycodings.com/sorting-searching/code12.html
일단, 먼저 함수 정보를 앞선 정보와는 약간의 변화가 필요한 시점이라서 어떻게 하는 것이 효율적이고 향후에 정보 접근에 용이할 것인지에 대해서 고민해봤습니다. (물론 저는 주로 생각을 하지 않고 먼저 저지르고 보는 성향이긴 합니다.)
함수이름 |
리턴 타입 |
입력 인자 및 타입 |
이와 같은 카테고리에 대한 정보를 나열할 예정입니다. 먼저, 관련된 정보를 취합하기 위해서 다음과 같이 클래스를 하나 만들어서 관련된 부분들을 지속적으로 저장할 예정입니다.
class function:
def __init__(self, Name, retype, args ):
self.funName = Name
self.retType = retype
self.args = args
그럼, 코드 부분을 살펴보겠습니다.
import re
class function:
def __init__(self, Name, retype, args ):
self.funName = Name
self.retType = retype
self.args = args
def reading_source(path):
functionList = [] # 함수들의 정보를 저장하기 위한 리스트
sourcecode = open(path,"r")
data = sourcecode.readlines()
number = 0
notWord = re.compile('(void|int|float)[ ]{1,}[\w]{1,}[(].{0,}[)][;]')
argMent = re.compile('[(].{0,}[)][;]')
returntype = re.compile('(void|int|float)')
for i in data:
val_i = notWord.search(i)
if val_i != None :
functionName = re.sub('(void|int|float)[ ]{1,}|[(].{0,}[)][;]', "",i)
rType = returntype.search(i).group()
args = argMent.search(i).group()
args = re.sub('[(]|[)]', "",args)
vfun = function(functionName, rType, args)
functionList.append(vfun)
return functionList
if __name__ == '__main__':
file = "D:\Example\Example_C.C"
lof = reading_source(file)
vNum = 0
for i in lof :
vNum = vNum + 1
print("function no : "+str(vNum))
print("function Name : "+ i.funName)
print("retun type : " + i.retType)
print("arguments type& info : " + i.args)
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
function no : 1
function Name : llist_add_begin
retun type : void
arguments type& info : struct lnode **n, int val;
function no : 2
function Name : llist_reverse
retun type : void
arguments type& info : struct lnode **n;
function no : 3
function Name : llist_display
retun type : void
arguments type& info : struct lnode *n;
실제 이런 궁금증을 가질 수 있습니다. 이와 같이 간단한 형태로 되어 있는 부분에 대해서 왜 함수와 클래스를 사용할 것인지에 대해서 의문을 가질 수 있습니다. 실제 이 부분에 대해서는 향후 C code 생성등에 사용하기 위해서 다음 형태로 코드를 작성하였습니다.
파이썬[Python] 정규표현식을 이용한 C 소스 코드에 선언된 함수 출력하기
이번 포스팅에서는 파이썬[Python] C 소스 코드에 선언된 함수 정보 입력 인자, 리턴인자 정보 출력하기라는 주제로 간단히 포스팅을 해봤습니다. 이와 같은 부분들을 응용하여 현재 본인의 코드 정보를 살펴 볼 수 있는 좋은 계기가 될 수 있을 것 같습니다. 혹 궁금하신 점이나 문의 사항이 있으면 댓글 및 방명록에 문의 부탁드립니다. 감사합니다.
'Python > Python 응용' 카테고리의 다른 글
파이썬[Python] 공휴일 날짜 관련 모듈 pytimekr 설치하고 사용하기 (0) | 2021.11.07 |
---|---|
파이썬[Python] 추출된 카톡 대화에서 사람마다 말한횟수 카운팅 하기 (0) | 2021.08.21 |
파이썬[Python] 정규표현식을 이용한 C 소스 코드에 선언된 함수 출력하기 (0) | 2021.07.27 |
파이썬[Python] C 소스 코드 공백포함, 공백 미포함 코드라인 수 확인하기 (0) | 2021.07.23 |
엑셀[Excel] Win32com을 입력받은 데이터 양(행,열)가 불규칙할 때 사용하기 좋은 팁 (0) | 2021.07.05 |