서론FastAPI를 공부하면서 데코레이터에 대한 이해가 필수적이라는 것을 알게 되었다. 파이썬을 다루면서 종종 접했던 *args와 **kwargs도 이에 깊이 관련되어 있다. 그동안 이 부분을 대충 넘어가곤 했지만, 이번 기회에 확실히 정리해보려 한다.처음 args와 **kwargs를 접했을 때, 나는 C언어의 포인터와 이중 포인터를 떠올렸다. C언어를 처음 배울 때 포인터는 어느 정도 이해했지만, 이중 포인터는 다소 복잡하게 느껴졌던 기억이 난다. 이러한 이유로 args와 **kwargs에 대해서도 자세히 알아보는 것을 피했던 것 같다.이번 포스팅에서는 *args와 **kwargs의 개념과 사용법을 명확히 정리하여, 앞으로의 개발에 있어 도움이 됐음 좋겠다.*args와 **kwargs의 개념*args ..
Python Advanced(1) - Context Manager(1) Keyword - Contextlib, enter, exit, exception 가장 대표적인 with 구문 이해 원하는 시점에 리소스 할당 및 회수 정확한 이해 후 사용 프로그래밍 개발 중요(문제 발생 요소) Ex1 # No use with. file = open('./testfile1.txt', 'w') try: file.write('Context Manager Test1.\nContextlib Test1.') finally: file.close() 예전에는 이런 식으로 많이 사용 Ex2 # Use with.` with open('testfile2.txt', 'w&#..
Python Advanced(1) - Lambda, Reduce, Map, Filter Functions Keyword - lambda, map, filter, reduce lambda 장점 : 익명, 힙 영역 사용 즉시 소멸, pythonic?, 파이썬 가비지 컬렉션(Count = 0) 일반함수 : 재사용성 위해 메모리 저장 시퀀스형 전처리에 Reduce, Map, Filter 자주 사용 Ex1-lamda cul = lambda a, b, c: a * b + c print('Ex1 >', cul(10, 15, 20)) -> lamda는 쉽게말해 함수를 간단하게 사용 가능하게 함 -> def로 선언한 함수와 다르게 람다 함수는 힙 영역에서 곧바로 사라져 카비지 컬렉션에서 처리할 필요가 없어 메모리 효율에..
Python Advanced(1) - Python Variable Scope Keyword - scope, global, nonlocal, locals, globals.. 전역변수는 주로 변하지 않는 고정 값에 사용 지역변수 사용 이유 지역변수는 함수 내에 로직 해결에 국한, 소멸주기 함수 실행 해제 시 전역변수를 지역내에서 수정되는 것은 권장X Ex1 a = 10 # Global variable def foo(): # Read global variable print('Ex1 > ', a) foo() # Read global variable print('Ex1 > ', a) -> 전역변수는 지역에서 읽을 수 있음 Ex2 b = 20 def bar(): b = 30 # Loca..
OT 결과만 뚝딱으로 만족만 하지 않고 중간의 과정을 어느정도 숙지하고 있으면 나중에 협업이나 유지 보수에 있어 이런 한 가지 언어의 깊은 지식을 갖고 있다면 가장 큰 장점이 된다. 사용하기 편리 vs 배우기 쉬운 파이썬은 가장 빠르게 결과 값을 낼 수 있음 쉬운 만큼 차이점을 가지려면 low level의 지식을 가지자 파이썬 메타 프로그래밍의 중요성 메타클래스 → 클래스의 동작(정의, 인스턴스화, 액세스) 깊이 수정 차차 자세히 알아보자 환경설정 이미 vscode나 파이썬 같은건 다 세팅이 되어있음 가상환경 설정법만 간단히 정리하고 넘어가자 가상환경을 사용하는 이유 의존관계가 있는 패키지들을 그 프로젝트마다 독립적으로 사용 할 수 있기 때문에 한 컴퓨터에 여러 프로젝트 파일이 있는데 각 프로젝트마다 다..
디자인 패턴이란? 디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책이다. 이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진청사진과 비슷하다. 청사진(靑寫眞) 또는 블루프린트(영어: blueprint)는 아키텍처 또는 공학 설계를 문서화한 기술 도면을 인화로 복사하거나 복사한 도면을 말한다. 은유적으로 "청사진"이라는 용어는 어떠한 자세한 계획을 일컫는 데에 쓰인다. -위키백과- 표준화된 라이브러리들이나 함수들을 복사해 사용하는 것처럼 패턴들을 붙여넣기 식으로는 사용할 수는 없다. 왜냐하면 패턴은 재사용할 수 있는 코드 조각이 아니라 특정 문제를 해결하는 방식을 알려주는 일반적인 개념이기 때문이다. 패턴은 알고리즘과 자주 혼동된다. 두..
Smart Parking Project 프로젝트를 진행 중 나중에 유용하다 싶은 내용을 기록합니다. 환경 세팅pip install super-gradients pip install opencv-python 라이브러리 및 GPU 설정 - (GPU 사용이 불가할 경우 CPU로 우회)import cv2 import torch from super_gradients.training import models device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print(device) use_cuda = torch.cuda.is_available() print(use_cuda) if use_cuda: print(torch.cuda.get_d..