매번 찾기 귀찮아서 모아두는 개발팁

[Python] 코드 내에서 argparse와 유사한 기능을 제공하는 구조체 만들기

archive-er 2023. 1. 13. 12:06

솔직히 이걸 뭐라고 적어야할지 모르겠는데 어차피 나만 보려고 만드는거니까 제목 아무렇게나 지음

GitHub에서 코드를 가져오거나 내 옛날 코드를 활용하다보면 argparser를 이용해서 인자를 주는 경우가 많은데

이 argparser가 완성된 코드를 돌릴 때는 매우 유용하지만 코드를 수정할때는 귀찮기 짝이없다

 

일단 결론: easydict 써라

https://pypi.org/project/easydict/

 

easydict

Access dict values as attributes (works recursively).

pypi.org

 

왜 귀찮냐고...? 나도 잘 모름 가끔씩 엄청 귀찮아짐

그냥 대충 argument 객체에 새로운 아이템 추가할때도 arg.new_item = "xx" 로 하고싶은데 안되잖아

은은하게 귀찮음

게다가 코드 갖다쓰는 경우에는 그 함수 하나 쓰자고 새롭게 argparse를 정의해야함

아 이게 귀찮았다

 

그래서 argparse랑 비슷하게 생겨먹어서 똑같이 작동할수 있는 친구가 어디없나 싶었는데

다행히 있었다

내가보기에 이거 한달 후에 똑같이 찾고있을거라 그냥 아카이빙해둠

from easydict import EasyDict as edit

args = edit({
	"key1": 1,
    	"key2": 2,
    	"key3": 3
})

위처럼 easydict 쓰면 argparse로 만든 arguement처럼 사용 가능하더라

args.key1
>> 1

 

참고로 외부 라이브러리라 설치해야함

pip install easydict