Tech & Development/Programming Languages
[Python] Pydantic Field: 더 세밀한 데이터 검증하기
[Python] Pydantic Field: 더 세밀한 데이터 검증하기
2025.01.12Pydantic의 Field는 BaseModel의 필드를 더 자세하게 정의하고 검증하기 위한 도구입니다. 단순히 타입을 지정하는 것을 넘어서, 데이터의 범위, 형식, 기본값 등을 세밀하게 제어할 수 있게 해줍니다.Field가 필요한 이유기본 BaseModel만으로는 이런 제약사항을 표현하기 어려웠습니다.class Product(BaseModel): name: str # 길이 제한을 어떻게 할까요? price: float # 음수는 어떻게 막을까요? stock: int # 재고가 0 미만이면 안 되는데...Field를 사용하면 이런 제약사항을 명확하게 표현할 수 있습니다.from pydantic import BaseModel, Fieldclass Product(BaseModel): ..
[Python] Pydantic BaseModel: 데이터 검증을 쉽게 하자
[Python] Pydantic BaseModel: 데이터 검증을 쉽게 하자
2025.01.11Pydantic의 BaseModel은 Python 데이터의 유효성을 검사하고 관리하기 위한 강력한 도구입니다. JSON 데이터를 파이썬 객체로 변환하거나, API 요청/응답을 검증할 때 특히 유용합니다. 간단한 클래스 정의만으로 복잡한 데이터 검증 로직을 구현할 수 있어요.BaseModel이 필요한 이유기존에는 데이터 검증을 이렇게 했습니다.def validate_user(data: dict): if "name" not in data: raise ValueError("이름이 필요합니다") if not isinstance(data["name"], str): raise ValueError("이름은 문자열이어야 합니다") if "age" in data and not i..
[Python] TypedDict: 딕셔너리에 타입 힌트 추가하기
[Python] TypedDict: 딕셔너리에 타입 힌트 추가하기
2025.01.11Python의 TypedDict는 딕셔너리의 키와 값에 대한 타입을 명확하게 지정할 수 있게 해주는 기능입니다. 특히 복잡한 데이터 구조를 다룰 때 발생할 수 있는 타입 관련 오류를 미리 방지할 수 있어 유용합니다.TypedDict가 필요한 이유기존 딕셔너리는 이런 문제가 있었습니다.# 일반 딕셔너리 사용 시user = { "name": "김철수", "age": 25, "email": "kim@example.com"}# 흔히 발생하는 실수들print(user["Name"]) # KeyError: 'Name' (키 이름 오타)print(user["age"] + "살") # TypeError: int + str 연산 불가user["phone"] = 123 # 예상치 못한 새로운 키 추가..
[Python] 함수형 프로그래밍
[Python] 함수형 프로그래밍
2024.11.24함수형 프로그래밍은 함수를 일급 객체로 취급하며, 불변 데이터와 순수 함수를 중심으로 하는 프로그래밍 패러다임입니다. Python은 객체지향 언어이지만, 함수형 프로그래밍의 강력한 기능도 제공합니다. 이 글에서는 Python에서 제공하는 함수형 프로그래밍 기법과 이를 활용하는 방법을 다룹니다.1. 함수형 프로그래밍이란?함수형 프로그래밍은 다음과 같은 특징을 가지고 있습니다:순수 함수: 함수는 입력값만을 사용하며 외부 상태를 변경하지 않습니다.불변성: 데이터는 변경되지 않고, 항상 새 데이터를 반환합니다.고차 함수: 함수를 매개변수로 전달하거나 반환할 수 있습니다.Python에서 함수형 프로그래밍을 지원하는 주요 도구는 map(), filter(), reduce(), 그리고 lambda 함수입니다.2. m..
[Python] 시간과 날짜 처리
[Python] 시간과 날짜 처리
2024.11.23Python은 날짜와 시간을 다루기 위한 강력한 모듈들을 제공합니다. datetime, time, calendar 모듈을 활용하면 다양한 날짜와 시간 작업을 간단히 수행할 수 있습니다. 이 글에서는 날짜와 시간을 다루는 기본적인 방법, 시간 계산, 특정 포맷 변환 등 유용한 기능들을 소개합니다.1. datetime 모듈: 날짜와 시간 처리의 기본datetime 모듈은 날짜와 시간 정보를 생성, 조작, 포맷팅 하는 데 사용됩니다.날짜와 시간 생성from datetime import datetime# 현재 날짜와 시간now = datetime.now()print("현재 날짜와 시간:", now)# 특정 날짜와 시간specific_date = datetime(2024, 12, 25, 15, 30)print("..
[Python] 제너레이터 (Generator)
[Python] 제너레이터 (Generator)
2024.11.18Python에서 제너레이터(Generator)는 큰 데이터를 메모리에 효율적으로 처리할 수 있게 도와주는 특별한 이터레이터입니다. 일반적인 함수와 달리, 제너레이터는 값을 한 번에 하나씩 반환하고, 매번 호출될 때 이전 상태를 기억합니다. 제너레이터는 yield 키워드를 사용하여 값을 반환하며, return을 사용하면 더 이상 값을 생성하지 않고 종료됩니다제너레이터의 특징메모리 효율성: 제너레이터는 값을 필요할 때마다 하나씩 생성하므로, 큰 데이터를 처리할 때 메모리를 아낄 수 있습니다.Lazy Evaluation(지연 평가): 모든 값을 한꺼번에 생성하지 않고, 요청할 때마다 값을 생성하여 반환합니다.상태 유지: yield 키워드 덕분에 함수의 상태가 유지되며, 중단된 위치에서 다시 시작할 수 있습니다..
[Python] 정규 표현식 (Regex)
[Python] 정규 표현식 (Regex)
2024.11.12정규 표현식(Regex, Regular Expression)은 문자열에서 특정 패턴을 찾고, 추출하거나, 치환할 때 사용하는 방법입니다. Python에서는 re 모듈을 통해 정규 표현식을 사용할 수 있습니다. 정규 표현식은 다양한 패턴을 통해 복잡한 문자열을 다룰 수 있어, 데이터 처리, 텍스트 분석, 웹 크롤링 등에 자주 활용됩니다.기본적인 정규 표현식 패턴정규 표현식에는 다양한 패턴이 있으며, 기본적인 패턴은 다음과 같습니다:. : 줄 바꿈 문자를 제외한 모든 문자 하나와 일치^ : 문자열의 시작을 의미$ : 문자열의 끝을 의미* : 앞의 문자가 0번 이상 반복됨을 의미+ : 앞의 문자가 1번 이상 반복됨을 의미? : 앞의 문자가 0번 또는 1번 나타남을 의미{n} : 정확히 n번 반복되는 패턴{n,..
[Python] 코드를 한 줄로 줄이는 방법: 내포 표현식과 One-liners
[Python] 코드를 한 줄로 줄이는 방법: 내포 표현식과 One-liners
2024.11.111. 리스트 내포 (List Comprehension)리스트 내포는 조건에 따라 요소를 필터링하거나 변환하여 새로운 리스트를 만들 수 있습니다. 예를 들어, 0부터 9까지의 숫자 중 짝수만 제곱한 리스트를 생성하려면 다음과 같이 작성할 수 있습니다.squares = [x**2 for x in range(10) if x % 2 == 0]print(squares) # [0, 4, 16, 36, 64]2. 딕셔너리 내포 (Dictionary Comprehension)딕셔너리 내포를 사용하면 키-값 쌍을 조건에 맞게 필터링하여 새로운 딕셔너리를 생성할 수 있습니다. 예를 들어, 0부터 4까지의 숫자와 그 제곱을 키-값으로 하는 딕셔너리는 다음과 같이 만들 수 있습니다.squares_dict = {x: x**2..
Python Packaging: pyproject.toml로 프로젝트 설정을 간편하게!
Python Packaging: pyproject.toml로 프로젝트 설정을 간편하게!
2024.04.25Python 프로젝트를 개발하다 보면 프로젝트 설정과 관련된 여러 파일들을 다뤄야 합니다. setup.py, requirements.txt, Pipfile, setup.cfg 등 다양한 파일들이 존재하죠. 하지만 이제 pyproject.toml이라는 새로운 표준이 등장했습니다. 이 글에서는 pyproject.toml에 대해 자세히 알아보고, 어떻게 구성하고 사용하는지 살펴보겠습니다.pyproject.toml 소개pyproject.toml은 Python 프로젝트의 빌드 시스템과 관련된 설정을 포함하는 파일입니다. 패키징 도구뿐만 아니라 linters, type checkers 등 다양한 도구들에서 사용됩니다. pyproject.toml에는 세 가지 TOML 테이블이 있을 수 있습니다.[build-syste..
Python 패키지 관리: requirements.txt 활용하기 (@ file)
Python 패키지 관리: requirements.txt 활용하기 (@ file)
2023.09.25Python 개발을 할 때, 프로젝트에 필요한 패키지들을 효과적으로 관리하는 것은 매우 중요합니다. `requirements.txt`는 이러한 패키지 관리를 도와주는 간단하면서도 강력한 도구입니다. 1. requirements.txt란? requirements.txt는 프로젝트에서 사용하는 Python 패키지들의 목록을 포함하는 텍스트 파일입니다. 이 파일을 통해 다른 개발자나 환경에서도 동일한 패키지와 버전을 쉽게 설치할 수 있습니다. 2. requirements.txt 생성하기 현재 환경에 설치된 패키지들의 목록을 `requirements.txt`로 저장하려면 다음 명령어를 사용합니다. 1) 기본방법 pip freeze > requirements.txt pip freeze 명령어도 패키지 목록을 생성..
Jupyter Notebook에 가상 환경 커널 추가
Jupyter Notebook에 가상 환경 커널 추가
2023.08.21Jupyter Notebook (Jupyter Lab)에서 가상 환경을 커널로 추가하려면 아래 내용을 참고하세요. 1. 먼저, 원하는 가상 환경을 생성합니다. 가상 환경을 생성하는 방법은 여러 가지가 있지만, virtualenv 또는 conda 등을 사용할 수 있습니다. Python 가상환경 구성 [참고] 가상환경을 구성하는 이유 python은 현재 2.x 버젼과 3.x 버젼이 혼용되는 과도기에 있고 때론, 2.x 버젼의 python 환경에서 프로젝트를 개발해야할 때도 있고, 3.x버젼의 python 환경에서 개발해 yunwoong.tistory.com 2. 해당 가상 환경을 활성화합니다. virtualenv의 경우: source myenv/bin/activate conda의 경우: conda activ..
Mojo🔥: AI를 위한 새로운 프로그래밍 언어
Mojo🔥: AI를 위한 새로운 프로그래밍 언어
2023.07.03세계에서 가장 많이 사용되는 프로그래밍 언어 중 하나인 Python은 그 사용자 친화적인 특성 덕분에 다양한 분야에서 활용되고 있습니다. 웹 개발자부터 데이터 과학자, 마케터, 심지어 AI 전문가 등, 여러 전문가들이 Python을 선택하는 주된 이유는 초보자에게도 친숙하며 읽고 쓰기 쉬운 언어라는 점입니다. 그러나 C++이나 Rust에 비해 Python의 실행 속도는 훨씬 느리고 배포 과정이 복잡하다는 단점이 있습니다. Python 프로그램을 완성한 후 이를 사용자에게 배포하려면, Python 자체를 설치해야 하고 해당 프로그램을 실행하는 데 필요한 모든 패키지를 추가로 설치해야 합니다. C++은 속도가 빠르지만, 배우고 사용하기 어렵다는 단점이 있었습니다. 이러한 문제점들을 해결하기 위해 등장한 것이..