긴 코드를 작성하다 보면 새로 작성한 코드가 정상적으로 작동하는지 확인하기 어려운 경우가 있다.
Python에서는 그러한 상황을 위해 breakpoint 라는 내장 함수를 제공한다.
기존 파이썬 디버거(pdb) 라이브러리가 자동으로 실행되며 현재 break point가 끝난 후의 명령어 중 핵심은
c: 다음 브레이크 포인트까지 이동
s : 프로그램 기준 한 줄 앞으로 이동
등이 있다.
사용예시
for idx in range(data_length):
row = dataset.iloc[idx].to_dict()
sentence, sbj_data, obj_data = row["sentence"], eval(row["subject_entity"]), eval(row["object_entity"])
sbj_word, sbj_start_id, sbj_end_id, sbj_type = sbj_data['word'], sbj_data['start_idx'], sbj_data['end_idx'], sbj_data['type']
obj_word, obj_start_id, obj_end_id, obj_type = obj_data['word'], obj_data['start_idx'], obj_data['end_idx'], obj_data['type']
if sbj_start_id < obj_start_id:
sentence = sentence[:obj_start_id] + f"@*{obj_type}*" + obj_word + f"@" + sentence[obj_end_id+1:]
sentence = sentence[:sbj_start_id] + f"#^{sbj_type}^" + sbj_word + f"#" + sentence[sbj_end_id+1:]
else:
sentence = sentence[:sbj_start_id] + f"#^{sbj_type}^" + sbj_word + f"#" + sentence[sbj_end_id+1:]
sentence = sentence[:obj_start_id] + f"@*{obj_type}*" + obj_word + f"@" + sentence[obj_end_id+1:]
subject_entity.append(sbj_word)
object_entity.append(obj_word)
sentences.append(sentence)
breakpoint()
위와 같이 코드를 작성할 경우 breakpoint한 지점에서 코드가 멈추고
CLI 환경에서 해당 환경의 여러 변수들이 실제 어떻게 작성되어 있는지 확인해볼 수 있다.
root@c17b1b88ecf7:~# python code/train.py
〈Something〉는 @*PER*조지 해리슨@이 쓰고 #^ORG^비틀즈#가 1969년 앨범 《Abbey Road》에 담은 노래다.
> /opt/ml/code/load_data.py(64)preprocessing_dataset()
-> out_dataset = pd.DataFrame({'id': dataset['id'], 'sentence': sentences,
(Pdb) row
{'id': 32469, 'sentence': '화순군(군수 구충곤)은 17일 동면의 이장 20여 명이 코로나 19 예방을 위해 버스 승강장, 공중화장실 등 다중이용시설과 오동리 천운아파트 주변을 소독하는 방역 봉사활동을 펼쳤다고 밝혔다.', 'subject_entity': "{'word': '화순군', 'start_idx': 0, 'end_idx': 2, 'type': 'ORG'}", 'object_entity': "{'word': '구충곤', 'start_idx': 7, 'end_idx': 9, 'type': 'PER'}", 'label': 'org:top_members/employees', 'source': 'wikitree'}
(Pdb) sentence[-1]
'.'
(Pdb) sentence
'#^ORG^화순군#(군수 @*PER*구충곤@)은 17일 동면의 이장 20여 명이 코로나 19 예방을 위해 버스 승강장, 공중화장실 등 다중이용시설과 오동리 천운아파트 주변을 소독하는 방역 봉사활동을 펼쳤다고 밝혔다.'
(Pdb) sentences[-1]
'#^ORG^화순군#(군수 @*PER*구충곤@)은 17일 동면의 이장 20여 명이 코로나 19 예방을 위해 버스 승강장, 공중화장실 등 다중이용시설과 오동리 천운아파트 주변을 소독하는 방역 봉사활동을 펼쳤다고 밝혔다.'
(Pdb)
'코딩 잡동사니 > 코딩 꿀팁' 카테고리의 다른 글
[Python] 자리수 맞게 0 채우기 (0) | 2023.05.17 |
---|---|
[Python] Couldn't find ffmpeg or avconv 에러 (0) | 2023.05.15 |
[디버깅]streamlit 서버와 로컬의 port번호가 다를 때 (0) | 2023.04.27 |
Git 과거 데이터 및 히스토리 삭제 (0) | 2023.04.25 |
[Python 꿀팁] 모듈 버전충돌시 코드 (0) | 2023.03.14 |