본문 바로가기

Python11

코딩테스트 언어 Java->Python 변경 기록 목차 LIST 코딩 테스트에서 사용하는 언어를 Java에서 Python으로 바꿔보려고 한다. 그래서 가벼운 문제들 풀면서 감잡는 과정 기록 1) 백준 2606번 바이러스 import sys from collections import deque n = int(input()) m = int(input()) table = [[0 for _ in range(101)] for _ in range(101)] for _ in range(m): x, y = map(int, input().split()) table[x][y] = 1 # 이부분! 때문에 처음에 틀렸었음 table[y][x] = 1 result = 0 visited = [0] * 101 stack = deque() stack.append(1) visited.. 2024. 3. 14.
단위 테스트(Pytest, Mock)란 무엇인가? 목차 LIST 단위 테스트 단위 테스트는 보조 수단이 아닌 소프트웨어의 핵심이 되는 필수적인 기능으로 일반 비즈니스 로직과 동일한 수준으로 다뤄져야 함 단위 테스트는 비즈니스 로직이 특정 조건을 보장하는지 확인하기 위해 여러 시나리오를 검증하는 코드 특징 격리 :단위 테스트는 다른 외부 에이전트와 완전히 독립적/비즈니스 로직에만 집중해야 함. 데이터베이스 연결 X HTTP 요청 X 격리란 테스트 자체가 독립적이라는 걸 의미하며 이전 상태에 관계 없이 임의의 순서대로 실행될 수 있어야 함 성능 : 단위 테스트는 신속하게 실행되어야 하며 반복적으로 여러 번 실행될 수 있도록 설계해야 함 자체 검증 : 단위 테스트의 실행만으로 결과를 결정할 수 있어야 함. 단위 테스트를 처리하기 위한 추가 단계가 없어져야 함.. 2023. 9. 4.
Python - SQLAlchemy 간단 정리 목차 LIST SQLAlchemy Python에서 사용하는 ORM(Object-relational mapping)이다. ORM은 말 그대로 객체(Object)와 관계(Relation)를 연결하는 것으로 데이터베이스 테이블의 데이터를 Object 필드와 매핑한다. 참고) 의존성 역전의 예제로 SQLAlchemy가 사용된다. SQLAlchemy를 사용하면 스키마를 별도로 정의하고, 스키마와 도메인 모델을 상호 변환하는 명시적인 매퍼(mapper)를 정의한다. 이렇게 ORM 기능을 사용하면 데이터와 애플리케이션 로직 사이의 강한 의존성을 줄이고, 도메인 모델과 데이터베이스 스키마 사이의 매핑을 추상화하여 의존성 역전 원칙이 적용된다. 장점 객체 지향적인 코드로 비즈니스 로직에 집중할 수 있다. 재사용 및 유지.. 2023. 8. 22.
Python subprocess 모듈 목차 LIST 들어가기 전에 Concurrency(병행성) : 컴퓨터가 여러 일을 동시에 하듯이 수행하는 것 예) CPU 코어가 하나인 컴퓨터에서 운영체제는 단일 프로세서에서 실행하는 프로그램을 교대로 빠르게 변경하여 프로그램들이 동시에 실행되는 것처럼 보이게 한다. Parallelism(병렬성) : 실제로 여러 작업을 동시에 실행하는 것 CPU 코어가 여러 개인 컴퓨터는 여러 프로그램을 동시에 실행할 수 있다. 각 CPU 코어가 각기 다른 프로그램의 명령어(instruction)를 실행하여 같은 순간에 여러 프로그램들이 실행될 수 있다. Concurrency 와 Parallelism은 속도 향상의 측면에서 가장 큰 차이점을 가진다. 한 프로그램에서 서로 다른 작업을 병렬로 진행하면 전체 작업에 걸리는.. 2023. 8. 20.
Python 비동기 Asyncio, coroutine 자세한 내용 비동기 프로그래밍이 필요한 이유 비동기 프로그래밍을 위해 Python 3.4 asyncio 라이브러리가 도입되었고, 3.5에서 async와 await 키워드가 도입되었습니다. 파이썬을 사용하다 보면 블로킹(blocking)을 경험했을 것입니다. 예를 들어 requests 라이브러리를 사용했을 때 requests.get(url)을 호출하면 프로그램이 멈칫하는 현상을 경험할 수 있는데 이는 블로킹으로 인한 결과입니다. 일회성 작업인 경우에는 괜찮을 수 있지만 동시에 10,000개의 URL을 호출한다면 requests를 적절히 호출하기란 쉽지 않습니다. 이는 대규모 병행성(동시성, concurrency)을 배우고 사용해야 하는 이유입니다. Asyncio 소개와 스레딩과의 차이점 Asyncio의 목표는 대기를 .. 2023. 3. 24.
Python Pandas - pivot() 목차 LIST Pivot 테이블이란? 테이블에서 두 개의 column을 각각 row index, column index로 사용하여 데이터를 재정렬 하는 것을 말합니다. 다시 말해, 피벗 테이블은 복잡한 데이터를 요약하고 분석하는데 유용한 테이블입니다. 이것은 마치 데이터를 회전시키거나 "피벗"하듯이 여러 데이터 축을 바탕으로 데이터를 재정렬하는 것을 통해 이해하기 쉬운 형태로 표시합니다. 예를 들어, 온라인 상점의 매출 데이터가 있다고 가정해보겠습니다. 이 데이터에는 "판매일", "상품", "지역", "매출액" 등의 정보가 포함되어 있을 수 있습니다. 이 데이터를 피벗 테이블로 만들면, "지역"을 행으로, "상품"을 열로, "매출액"을 값으로 설정할 수 있습니다. 이렇게 하면 각 지역에서 각 상품의 총 .. 2023. 2. 6.
반응형