본문 바로가기

프로그래밍 언어38

파이썬 yield 키워드란? yield 키워드 사용방법 파이썬에서 "yield" 키워드의 작동 방식 파이썬에서 yield 키워드는 제너레이터 함수를 만드는 데 사용됩니다. 일반 함수가 단일 값을 반환하는 것과 달리 제너레이터 함수는 yield를 사용하여 실행을 일시 중단하고 값을 하나씩 반환합니다. 이를 통해 대규모 데이터 세트나 무한 시퀀스를 처리할 때 메모리 효율성을 높일 수 있습니다. 주요 특징: 실행 일시 중단: 함수 내에서 yield를 만나면 실행이 해당 지점에서 일시 중단되고 현재 값이 반환됩니다. 다시 시작하려면 for 루프를 사용하여 제너레이터를 반복해야 합니다. 루프가 반복될 때마다 제너레이터는 중단된 지점부터 계속 실행되며, 다른 yield에 도달하여 또 다른 값을 반환할 수 있습니다. 메모리 효율성: 리스트나 다른 데이터 구조가 모든 요소.. 2024. 2. 22.
파이썬 if __name__ == "__main__" if name == "main": 의 작동 방식 개요: if __name__ == "__main__": 구조는 Python에서 스크립트가 실행되는 방식에 따라 코드의 어떤 부분이 실행될지 제어하는 역할을 합니다. 이것은 스크립트를 직접 실행하는 경우와 다른 스크립트에서 모듈로 가져오는 경우에 따라 코드의 실행 방식을 달리하게 해줍니다. 작동 방식: 스크립트 실행: 스크립트를 직접 실행하면 (python my_script.py 등) __name__ 변수는 "__main__" 값을 갖습니다. 이 경우 if 블록 안에 있는 코드가 실행됩니다. 이 블록은 일반적으로 스크립트의 핵심 기능을 담당합니다. 마치 프로그램의 무대와 같다고 생각하면 됩니다. 모듈 가져오기: 다른 스크립트에서 스크립트를 모듈로 가져오면 (.. 2024. 2. 19.
C++ range와 range iterator #include struct FibonacciIterator { bool operator!=(int x) const { return x >= current; } FibonacciIterator& operator++() { const auto tmp = current; current += last; last = tmp; return *this; } int operator*() const { return current; } private: int current{1}, last{1}; }; struct FibonacciRange { explicit FibonacciRange(int max) : max{ max } { } FibonacciIterator begin() const { return Fibonacci.. 2022. 3. 3.
C++ unique_ptr 직접 구현해 보기 #include #include #include template struct SimpleUniquePointer { SimpleUniquePointer() = default; SimpleUniquePointer(T* pointer) : pointer{ pointer } { } ~SimpleUniquePointer() { if(pointer) delete pointer; } SimpleUniquePointer(const SimpleUniquePointer&) = delete; SimpleUniquePointer& operator=(const SimpleUniquePointer&) = delete; SimpleUniquePointer(SimpleUniquePointer&& other) noexcept : p.. 2022. 3. 1.
C++ runtime polymorphism과 constructor injection, property injection enum class를 이용한 runtime polymorphism #include #include struct FileLogger { void log_transfer(long from, long to, double amount) { --snip-- printf("[file] %ld,%ld,%f\n", from, to, amount); } }; struct ConsoleLogger { void log_transfer(long from, long to, double amount) { printf("[cons] %ld -> %ld: %f\n", from, to, amount); } }; enum class LoggerType { Console, File }; struct Bank { Bank() : type .. 2022. 2. 28.
Numpy 튜토리얼 Numpy는 다차원 배열을 이용해 선형대수, 통계 등의 계산을 빨리할 수 있게 만들어 주는 라이브러리이다. 파이썬 리스트와 넘파이 배열의 차이점 파이썬 리스트: 서로 다른 데이터 타입을 하나의 리스트에 넣을 수 있다. 넘파이 배열(numpy array): 같은 타입의 자료형만 넣을 수 있음 넘파이를 사용하는 이유: 파이썬 리스트보다 빠르며, 메모리를 적게 사용한다. 배열(array)는 넘파이가 사용하는 자료구조. 배열의 모든 구성요소는 같은 타입이다. 이 타입은 dtype이라 한다. 배열은 0이 아닌 정수, 불리안, 다른 배열로 접근 가능하다. 배열의 rank는 차원의 개수 배열의 shape은 각 차원의 크기 넘파이 배열은 파이썬 리스트를 이용해 초기화한다. a = np.array([1, 2, 3]) n.. 2022. 2. 9.
파이썬 문자열 출력 포맷팅 방법 f-string, str.format(), % 파이썬(Python)에서 문자열 출력 형식을 설정하는 세 가지 방법에 대해 알아봅니다. 포맷 문자열(formatted string literals, f-string) Python 3.6 이상에서 동작하는 문법이다. 문자열 앞에 f 혹은 F를 붙여 주고, 중괄호 {, } 안에 변수명을 써서 해당 변수를 참조하여 문자열을 만들 수 있다. 최신 파이썬에서 추가된 만큼 속도 또한 다른 문자열 형식에 비해 빠르다. year = 2016 event = 'Referendum' print(f'Results of the {year} {event}') # 'Results of the 2016 Referendum' 중괄호 안에서 연산을 수행할 수 있다. box = 10 apple = 20 print(f'Total count.. 2022. 1. 8.