기본 콘텐츠로 건너뛰기

라벨이 프로그래밍인 게시물 표시

Python에서 CLI 도구 만들기 (argparse vs click)

파이썬으로 명령줄 도구 만드는 중이신가요? 저도 얼마 전에 비슷한 작업을 했었는데, argparse 랑 click 이라는 두 라이브러리 때문에 꽤 고민했거든요. 둘 다 훌륭하지만, 어떤 걸 써야 할지 정말 헷갈리더라고요. 그래서 제가 직접 써보고 느낀 점들을 바탕으로 얘기해 드릴게요! 먼저, argparse 는 파이썬에 기본적으로 포함된 라이브러리예요. 기능은 정말 막강하죠. 마치 스위스 아미 나이프처럼, 세세하게 옵션을 조절할 수 있어요. 복잡한 도구를 만들 때는 정말 유용해요. 하지만, 간단한 걸 만들 때는 쓸데없이 코드가 길어지는 느낌이 들더라고요. 마치 거대한 대포로 모기를 잡는 것 같은 느낌이랄까요? 저는 처음에 argparse 로 시작했는데, 코드가 너무 길어지니까 나중에 수정하기가 힘들더라구요. 괜히 힘들게 했나 싶었어요. 반면에 click 은 외부 라이브러리인데, 사용하기가 훨씬 쉽고 간결해요. 마치 레고 블록처럼, 몇 개의 코드만으로도 멋진 명령줄 도구를 만들 수 있죠. 특히 데코레이터라는 기능을 사용하는데, 처음엔 좀 어렵게 느껴질 수도 있지만, 익숙해지면 코드가 정말 깔끔해져요. 저는 간단한 도구를 만들 때 click 을 사용했는데, 정말 속도가 빨랐어요. 코드도 짧고 이해하기도 쉬워서 좋았습니다. 마치 마법처럼 뚝딱 만들어지는 느낌이었어요! 실제로 제가 만들었던 간단한 파일 처리 도구 예시를 보여드릴게요. argparse 로 만든 코드는 이렇게 길어졌지만, click 으로 만든 코드는 훨씬 짧고 보기 편하더라고요. 1. argparse 예제 import argparse def main(): parser = argparse.ArgumentParser(description="파일 내용을 출력하거나 줄 수를 세는 도구") parser.add_argument("filename", help="읽을 파일 이름"...

Python의 dataclass vs attrs 사용 비교 및 실전 예제

파이썬으로 개발하다 보면 데이터 객체를 정의해야 할 일이 정말 많잖아요? 저도 처음엔 뭘 써야 할지 엄청 고민했는데, dataclass 랑 attrs 라는 훌륭한 도구가 있다는 걸 알게 됐어요. 둘 다 코드를 깔끔하게 만들어주는 데 탁월하지만, 어떤 걸 선택해야 할지는 상황에 따라 다르더라고요. 제가 직접 써보면서 느낀 차이점들을 풀어서 설명해 드릴게요! 일단 dataclass 는 파이썬 3.7부터 기본으로 제공되는 기능이에요. @dataclass 라는 데코레이터만 붙이면 뚝딱! 데이터 클래스를 만들 수 있죠. 마치 마법처럼요! 설치할 게 없으니 얼마나 편한지 몰라요. 초보자도 금방 익숙해질 수 있을 만큼 사용법이 간단하다는 것도 큰 장점이죠. 저도 처음엔 이걸로 시작했어요. 정말 간단한 데이터 객체를 만들 때는 최고였거든요. 반면에 attrs 는 따로 설치해야 하는 라이브러리인데요 ( pip install attrs 치면 돼요!), dataclass 보다 훨씬 강력한 기능들을 제공해요. 데이터 유효성 검사라든가, 직렬화 같은 기능 말이죠. 처음엔 좀 어렵게 느껴졌지만, 복잡한 프로젝트를 진행하면서 attrs 의 진가를 제대로 알게 됐어요. 데이터 검증 로직을 직접 작성할 필요 없이 attrs 에서 제공하는 기능으로 간단하게 처리할 수 있었거든요. 시간도 많이 절약되었고요! 자, 이제 둘의 차이를 간단하게 정리해 볼까요? 표로 만들어 봤어요. 참고로, 저는 실제로 사용하면서 느낀 점들을 적어봤어요. 특징 dataclass attrs 의존성 없음! 파이썬 기본 기능이에요. attrs 라이브러리를 설치해야 해요. 기능 기본적인 기능만 제공해요. 간단하게 쓰기 좋아요. 훨씬 다양하고 강력한 기능들을 제공해요. 데이터 검증 기능이 특히 좋아요! 성능 attrs 보다는 조금 느려요. 체감은 크지 않아요. 좀 더...

Django에서 Redis 캐싱 전략 구현하기

Django에서 Redis 캐싱 전략 구현하기 안녕하세요! 오늘은 Django 프로젝트에서 Redis를 활용한 효율적인 캐싱 전략을 구현하는 방법에 대해 알아보겠습니다. 왜 Redis를 사용할까요? Redis를 캐싱 솔루션으로 선택하는 이유는 다음과 같습니다: 빠른 성능 : 인메모리 데이터베이스로 초고속 데이터 접근 데이터 구조 다양성 : 문자열, 해시, 리스트, 세트 등 다양한 데이터 구조 지원 영구성 : 데이터를 디스크에 저장하여 서버 재시작 시에도 데이터 유지 분산 시스템 지원 : 클러스터링을 통한 확장성 풍부한 기능 : TTL, Pub/Sub, 트랜잭션 등 다양한 기능 제공 1. 기본 설정 1.1 Redis 설치 # Ubuntu/Debian sudo apt-get install redis-server # macOS brew install redis 1.2 Django Redis 설정 # settings.py CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PARSER_CLASS": "redis.connection.HiredisParser", "CONNECTION_POOL_CLASS": "redis.BlockingConnectionPool", "CONNECTION_POOL...