Python
-
프로그래밍에서 데이터의 무결성을 유지하는 것은 매우 중요합니다. 특히, 클래스 내부의 속성(데이터)이 외부에서 직접 변경될 경우, 원하지 않는 값이 설정되어 프로그램이 예상치 못한 동작을 할 수 있습니다. 이를 방지하기 위해 Getter(게터)와 Setter(세터) 를 사용합니다. Getter와 Setter는 클래스 내부의 private(비공개) 속성에 접근하거나 값을 변경하는 메서드입니다. 이를 활용하면 데이터를 안전하게 보호하면서도 필요한 경우 외부에서 값을 읽고 수정할 수 있도록 허용할 수 있습니다.Getter & Setter를 사용해야 하는 이유데이터 보호: 직접 속성에 접근하는 것을 방지하고, 유효한 값만 설정되도록 제한할 수 있습니다.내부 구현 변경 가능: 클래스 내부 구조가 변경되더라도 G..
파이썬 Getter & Setter: 데이터 보호의 수호자프로그래밍에서 데이터의 무결성을 유지하는 것은 매우 중요합니다. 특히, 클래스 내부의 속성(데이터)이 외부에서 직접 변경될 경우, 원하지 않는 값이 설정되어 프로그램이 예상치 못한 동작을 할 수 있습니다. 이를 방지하기 위해 Getter(게터)와 Setter(세터) 를 사용합니다. Getter와 Setter는 클래스 내부의 private(비공개) 속성에 접근하거나 값을 변경하는 메서드입니다. 이를 활용하면 데이터를 안전하게 보호하면서도 필요한 경우 외부에서 값을 읽고 수정할 수 있도록 허용할 수 있습니다.Getter & Setter를 사용해야 하는 이유데이터 보호: 직접 속성에 접근하는 것을 방지하고, 유효한 값만 설정되도록 제한할 수 있습니다.내부 구현 변경 가능: 클래스 내부 구조가 변경되더라도 G..
2025.02.03 -
FastAPI 애플리케이션의 성능을 개선하기 위해 많은 자료를 찾아보고 정리해봅니다.예제 소개다음은 FastAPI의 기본적인 엔드포인트 예제입니다. Product라는 Pydantic 모델을 정의하고, products 리스트를 반환하는 엔드포인트를 구현했습니다. 각 섹션에서 이 코드를 조금씩 최적화하며 개선해 보겠습니다.from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Product(BaseModel): product_id: str price: float@app.get("/products/", response_model=list[Product])def read_products(): products =..
FastAPI 성능 최적화하기FastAPI 애플리케이션의 성능을 개선하기 위해 많은 자료를 찾아보고 정리해봅니다.예제 소개다음은 FastAPI의 기본적인 엔드포인트 예제입니다. Product라는 Pydantic 모델을 정의하고, products 리스트를 반환하는 엔드포인트를 구현했습니다. 각 섹션에서 이 코드를 조금씩 최적화하며 개선해 보겠습니다.from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Product(BaseModel): product_id: str price: float@app.get("/products/", response_model=list[Product])def read_products(): products =..
2025.01.15 -
AI 웹앱 개발자로서 Python은 이제 너무 중요한 언어인것 같습니다. 주력 언어로 Javascript와 Python은 계속 이어질것 같고 Python을 좀 더 딥하게 이해하고 숙달하기 위해 중요 개념들을 정리해봅니다.1. 객체지향 프로그래밍(OOP)선행 지식: Python 기본 문법, 함수연관 개념: 클래스, 상속, 다형성, 캡슐화객체지향 프로그래밍은 Python을 배우는 여정에서 꼭 익혀야 할 가장 중요한 개념 중 하나입니다.Python은 Java처럼 엄격한 객체지향 언어는 아니지만, 실제 프로젝트에 기여하기 위해서는 좋은 OOP 개념과 모범 사례를 반드시 이해해야 합니다.객체지향 프로그래밍은 단순히 클래스와 객체를 만드는 것이 아니라, 현실 세계에 맞게 코드를 구조화하는 방법을 배우는 것입니다...
시니어 파이썬 개발자로 나아가기위한 10가지 개념AI 웹앱 개발자로서 Python은 이제 너무 중요한 언어인것 같습니다. 주력 언어로 Javascript와 Python은 계속 이어질것 같고 Python을 좀 더 딥하게 이해하고 숙달하기 위해 중요 개념들을 정리해봅니다.1. 객체지향 프로그래밍(OOP)선행 지식: Python 기본 문법, 함수연관 개념: 클래스, 상속, 다형성, 캡슐화객체지향 프로그래밍은 Python을 배우는 여정에서 꼭 익혀야 할 가장 중요한 개념 중 하나입니다.Python은 Java처럼 엄격한 객체지향 언어는 아니지만, 실제 프로젝트에 기여하기 위해서는 좋은 OOP 개념과 모범 사례를 반드시 이해해야 합니다.객체지향 프로그래밍은 단순히 클래스와 객체를 만드는 것이 아니라, 현실 세계에 맞게 코드를 구조화하는 방법을 배우는 것입니다...
2025.01.15 -
Python 3.14: 주요 업데이트와 새로운 기능 Python 3.14의 세 번째 알파 릴리스가 공개되면서 많은 주목을 받고 있습니다. Python 커뮤니티는 매 릴리스마다 점진적인 개선과 주요 기능 추가를 통해 개발자들에게 강력한 도구를 제공하고 있습니다. 이번 3.14 릴리스에서도 눈에 띄는 새로운 업데이트가 포함되었습니다. 다음은 그 중 상위 5개의 주요 개선 사항입니다.1. 환경 변수 다시 로드 기능 추가os.environ은 Python 프로그램의 시작 시 정의된 캐시된 환경 변수를 보관합니다. 그러나 Python 스크립트 외부에서 환경 변수가 변경되었을 때 이를 반영하지 못하는 문제가 있었습니다. 이를 해결하기 위해 Python 3.14에서는 새로운 내장 함수 os.reload_environ(..
Python 3.14 출시 - 꼭 알아야 할 5가지 주요 기능Python 3.14: 주요 업데이트와 새로운 기능 Python 3.14의 세 번째 알파 릴리스가 공개되면서 많은 주목을 받고 있습니다. Python 커뮤니티는 매 릴리스마다 점진적인 개선과 주요 기능 추가를 통해 개발자들에게 강력한 도구를 제공하고 있습니다. 이번 3.14 릴리스에서도 눈에 띄는 새로운 업데이트가 포함되었습니다. 다음은 그 중 상위 5개의 주요 개선 사항입니다.1. 환경 변수 다시 로드 기능 추가os.environ은 Python 프로그램의 시작 시 정의된 캐시된 환경 변수를 보관합니다. 그러나 Python 스크립트 외부에서 환경 변수가 변경되었을 때 이를 반영하지 못하는 문제가 있었습니다. 이를 해결하기 위해 Python 3.14에서는 새로운 내장 함수 os.reload_environ(..
2025.01.15 -
Python의 collections 모듈에 있는 Counter 클래스에 대해 알아보겠습니다.Counter는 데이터의 빈도를 계산하는 데 특화된 도구로, 코드를 간결하게 만들고 성능을 향상시키는 데 큰 도움이 됩니다.Counter 소개Counter는 해시 가능한 객체를 세는 데 사용되는 딕셔너리의 하위 클래스입니다. 요소가 딕셔너리 키로 저장되고, 그 개수가 딕셔너리 값으로 저장됩니다.기본 사용법from collections import Counter# 리스트에서 요소 개수 세기fruits = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']fruit_counter = Counter(fruits)print(fruit_counter) # Counter(..
Python Collections의 Counter: 데이터 빈도 계산의 강력한 도구Python의 collections 모듈에 있는 Counter 클래스에 대해 알아보겠습니다.Counter는 데이터의 빈도를 계산하는 데 특화된 도구로, 코드를 간결하게 만들고 성능을 향상시키는 데 큰 도움이 됩니다.Counter 소개Counter는 해시 가능한 객체를 세는 데 사용되는 딕셔너리의 하위 클래스입니다. 요소가 딕셔너리 키로 저장되고, 그 개수가 딕셔너리 값으로 저장됩니다.기본 사용법from collections import Counter# 리스트에서 요소 개수 세기fruits = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']fruit_counter = Counter(fruits)print(fruit_counter) # Counter(..
2024.08.29 -
파이썬에서 리스트를 다룰 때 흔히 마주치는 문제 중 하나는 리스트를 순회하면서 동시에 요소를 제거하는 상황입니다. 이런 작업이 예상치 못한 결과를 낳는 경우가 많은데, 오늘은 이 문제와 그 해결 방법을 알아보겠습니다.문제가 있는 코드다음 코드를 봐주세요:def remove_max_values(values): if not values: return max_val = max(values) for i, v in enumerate(values): if v == max_val: values.pop(i) result.append(v) return result# 테스트values = [5, 5, 4, 3, 5, 2]result = []print..
파이썬 리스트 순회 중 요소 제거(반복문 도중에 멈춤): 함정과 해결책파이썬에서 리스트를 다룰 때 흔히 마주치는 문제 중 하나는 리스트를 순회하면서 동시에 요소를 제거하는 상황입니다. 이런 작업이 예상치 못한 결과를 낳는 경우가 많은데, 오늘은 이 문제와 그 해결 방법을 알아보겠습니다.문제가 있는 코드다음 코드를 봐주세요:def remove_max_values(values): if not values: return max_val = max(values) for i, v in enumerate(values): if v == max_val: values.pop(i) result.append(v) return result# 테스트values = [5, 5, 4, 3, 5, 2]result = []print..
2024.08.21 -
Python 유효성 검사하고 dictionary 특정 키값 업데이트하기. Clean하게. 유효성 검사 안하면 아래처럼 에러가 생깁니다.bson.errors.InvalidId: 'undefined' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string 우선 키값을 update하려면 아래처럼 유효성을 검사하고 새로운 value를 넣으면 됩니다. if aiPicPrompt: aiPicPrompt["_id"] = str(aiPicPrompt.get("_id")) 하지만 위의코드도 작동하지만 한줄로 줄이고, 더 멋지게 작성할 수 있습니다.aiPicPrompt and aiPicPrompt.update(_id=str(ai..
Python 유효성 검사하고 dictionary 특정 키값 업데이트하기[As Clean](bson.errors.InvalidId: 'undefined' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string)Python 유효성 검사하고 dictionary 특정 키값 업데이트하기. Clean하게. 유효성 검사 안하면 아래처럼 에러가 생깁니다.bson.errors.InvalidId: 'undefined' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string 우선 키값을 update하려면 아래처럼 유효성을 검사하고 새로운 value를 넣으면 됩니다. if aiPicPrompt: aiPicPrompt["_id"] = str(aiPicPrompt.get("_id")) 하지만 위의코드도 작동하지만 한줄로 줄이고, 더 멋지게 작성할 수 있습니다.aiPicPrompt and aiPicPrompt.update(_id=str(ai..
2024.08.16 -
Python의 비동기 프로그래밍을 활용하여 데이터베이스 쿼리를 어떻게 효율적으로 최적화할 수 있는지 알아보겠습니다.특히 asyncio.gather()를 사용한 멋진 코드 한 줄로 어떻게 성능을 크게 향상시킬 수 있는지 살펴보죠.문제 상황여러분이 아래와 같은 코드로 여러 개의 데이터베이스 쿼리를 순차적으로 실행하고 있다고 가정해봅시다:hashTags = []for val in hashBroker: hashtag = await findOne(dbName, table, {"_id": ObjectId(val.get('hashtagID'))}) hashTags.append(hashtag)이 코드는 작동하지만, 각 쿼리를 하나씩 순차적으로 처리하기 때문에 hashBroker의 크기가 크다면 상당한 시간이..
비동기 프로그래밍의 마법: asyncio.gather()로 데이터베이스 쿼리 최적화하기Python의 비동기 프로그래밍을 활용하여 데이터베이스 쿼리를 어떻게 효율적으로 최적화할 수 있는지 알아보겠습니다.특히 asyncio.gather()를 사용한 멋진 코드 한 줄로 어떻게 성능을 크게 향상시킬 수 있는지 살펴보죠.문제 상황여러분이 아래와 같은 코드로 여러 개의 데이터베이스 쿼리를 순차적으로 실행하고 있다고 가정해봅시다:hashTags = []for val in hashBroker: hashtag = await findOne(dbName, table, {"_id": ObjectId(val.get('hashtagID'))}) hashTags.append(hashtag)이 코드는 작동하지만, 각 쿼리를 하나씩 순차적으로 처리하기 때문에 hashBroker의 크기가 크다면 상당한 시간이..
2024.08.13