목록Backend/Python + FastAPI (19)
elevne's Study Note
import math math.radians(30) Radian 각도의 값을 반환한다. type(1) #int type(12.1) #float type("Hello") #str type 반환한다. x1 = 3 id(x1) #2297624160624 x2 = "Hello" id(x2) #2297710128304 객체의 주소값을 반환한다. x1 = 3 x12 # x2/(2**2) = 2 shift 연산자이다. name = "Harry" name.lower() # 'harry' x = 1 y = 2 (1 ^ 0) # XOR lower() 메서드와 XOR 연산자이다. abs(-33) # 절대값 33 # 문자열 "%s * %s = %s"%(3, 3, 3*3) # 정수형 "%d * %d = %d"%(3, 3, 3*..

OpenCV 는 오픈소스 기반의 가장 많이 사용되는 CV 라이브러리이다. C++ 기반이지만 Python, Java, C# 등 다양한 언어에서 사용이 가능하다. OpenCV 에서 이미지를 불러올 때는 imread() 메서드를 사용하는데 이는 RGB 형식이 아니라 BGR 형식으로 불러와서 색감이 다르게 나타난다. matplotlib 으로 불러온 이미지와 비교해보면 차이를 확인해볼 수 있다. 원본이미지의 색감으로 다시 변형하고 싶을 때 cvtColor() 메서드를 사용한다. 아래와 같이 진행해볼 수 있다. image = cv2.imread("./data/cat.jpg") rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) plt.imshow(rgb_image) OpenC..

Python 에서 데코레이터는 함수나 클래스의 기능을 수정하는 메타프로그래밍 기법이다. Decorator 은 함수나 클래스를 래핑하고, 그 래핑된 객체를 반환하며 호출될 때 추가적인 동작을 수행하게 한다. 자주 사용되는 데코레이터 중 하나가 @property 데코레이터이다. @property 데코레이터는 클래스 내부의 메서드를 속성처럼 사용할 수 있게 한다. 클래스 내부의 변수를 다루는 메서드들을 정의할 때 사용된다. fget 은 어트리뷰트 값을 얻는 함수, fset 은 어트리뷰트 값을 설정하는 함수, fdel 은 어트리뷰트 값을 삭제하는 함수이다. doc 은 어트리뷰트의 docstring 을 만든다. @property 는 일반적인 클래스 속성과 달리 속성에 대한 값을 계산하거나 수정할 때 메서드를 호출..

~ 연산자에 대해서 자세하게 알아보기 전, 우선 보수의 개념에 대하여 이해해야 한다. 컴퓨터는 n 개의 비트를 이용하여 2^n 개의 정수만 표현 가능하다. 정수 표현 시 +, - 부호 또한 비트로 표현을 해주어야 한다. 이러한 방식을 이용하여 모든 정수를 표현하는 것은 쉬운 일이 아닐 것이다. 이 때 보수의 개념이 사용된다. 보수란 두 수의 합이 진법의 밑수(n)가 되게 하는 수를 말한다. (e.g., 10진수 4의 10의 보수는 6; 10진수 2의 10의 보수는 8) 이는 컴퓨터에서 음의 정수를 표현하기 위하여 고안되었다고 한다. 컴퓨터 내부에서는 사칙연산을 할 때 덧셈을 담당하는 Adder 만 이용하기에 뺄셈도 덧셈으로 형식을 변환하여 계산해야 하기 때문이다. 컴퓨터 내부에서 뺄셈을 진행하게 될 때는..
Python Class 에는 Magin Method 라는 클래스 내부에 미리 정의된 특별한 메서드들이 있다. 이들은 해당 클래스 객체의 생성, 비교, 조작 및 표현에 사용된다. 이번에는 그 매직메서드들을 몇 가지 정리해보았다. Method Description __init__(self, ...) 클래스의 인스턴스가 생성될 때 호출되는 메서드. 객체를 초기화하고 초기 상태를 설정하는데 사용 __repr__(self) 객체를 나타내는 공식적인 문자열을 반환하는 메서드. 일반적으로 해당 객체를 생성하는 코드를 반환하도록 작성됨 __str__(self) 객체를 나타내는 비공식적인 문자열을 반환하는 메서드. 일반적으로 객체의 속성 값을 문자열로 변환하여 반환하도록 작성됨 __eq__(self, other) 두 객..

Java 에서와 마찬가지로 Python 에서도 Collections 를 활용하여 다양한 자료구조를 사용해볼 수 있으며, 이를 사용하여 복잡한 작업을 더욱 간단하게 이루어낼 수 있다. 이번에는 Collections 모듈에서 사용할 수 있는 각종 클래스들을 사용해보았다. 예제는 아래 링크를 참조하여 연습하였다. 링크: https://wikidocs.net/84392 2.5 collections 모듈 `collections` 모듈에는 데이터 처리를 위한 유용한 객체가 많이 있다. 그중 몇 가지를 간략히 소개한다. ### 예: 카운트하기 보유한 주식이 다음과 같을 때, 종목… wikidocs.net 아래와 같은 데이터가 있다고 가정하였을 때, Collections 의 각종 객체를 활용하여 다양한 작업을 진행할 ..

동시성 (Concurrency) 과 병렬성 (Parallelism) 은 프로그래밍에서 아주 중요한 요소이다. 이 두 가지의 특성을 이용하여 한정적인 자원에서 최대한의 성능을 이끌어낼 수 있다. 병렬성 (Parallelism) 은 물리적으로 동시에 여러 가지 작업을 연산하는 것을 의미한다. 컴퓨터에서 하나의 CPU 는 한 번에 하나의 연산만 수행할 수 있기 때문에, 멀티코어 CPU 가 아니라면 병렬성을 구현할 수 없다고 한다. 병렬처리를 진행할 때, 병렬화하는 주체를 어떤 것으로 할지 선택할 수 있다. 작업을 병렬화하는 것은 작업 병렬성, 작업하는 데이터를 병렬화하는 것은 데이터 병렬성이라고 한다. 작업 병렬성은 동시에 구분된 작업을 수행하는 것이다. 여러 개의 CPU 에서 각각 다른 작업을 수행하는 것이..

오늘은 Python의 Generator에 대해 알아보았다. Generator이란 Loop의 반복 동작을 제어하는 특이한 함수다. Python의 Generator은 함수를 이용해서 Iterator을 만드는 방법인데, Generator은 함수 안에 yield 문을 사용한다. 이는 일반적인 함수와 달리 함수를 실행하고 yield 문이 나올 때까지 실행을 일시 중지하고, 그 이후에도 함수를 재시작 할 수 있도록 한다. (이를 통해서 원하는 값들의 무한 Sequence를 만들 수도 있다고 함) Iterator과 Generator을 흔히 혼용해서 사용하는데, 이는 Generator가 Iterator의 속성을 가지고 있기 때문이라고 한다. Generator, Iterator 각각의 next() 메서드의 차이를 보자면..