Python147 [Python] pathlib.Path 파일 경로 다루기 안녕하세요. 오늘은 경로를 문자열이 아닌 객체로 다루는 pathlib.Path가 어떻게 동작하는지 살펴보겠습니다. pathlib과거에 경로는 문자열(String)로 다뤘지만, 파이썬 3.4부터 표준 라이브러리로 도입된 pathlib은 파일 시스템 경로를속성과 기능(메서드)을 가진 객체(Object)로 다룹니다. pathlib의 핵심 클래스는 바로 Path입니다. 우리가 파일 경로를 Path 객체로 만드는 순간, 파이썬은 이 경로를 단순한 글자가 아니라 운영체제 파일 시스템과 상호작용할 수 있는 객체로 인식합니다. from pathlib import Path# 현재 작업 경로를 객체로 생성p = Path.cwd() print(type(p)) 결과 (윈도우)리눅스의 경우 : 와 같이 출력됩니다. 위와 .. 2025. 12. 2. [Python] heapq 활용해 정렬 및 최소값 찾기 안녕하세요오늘은 heapq 활용해서 더 빠르게 정렬하고 최소값을 찾아보도록 하겠습니다. heapq는 “힙(Heap)” 자료구조를 구현한 파이썬 내장 모듈입니다.힙(Heap)이란,항상 부모 노드가 자식 노드보다 작거나(최소 힙)항상 크거나(최대 힙) 인 완전이진트리 구조의 자료구조입니다. 파이썬의 heapq는 기본적으로 최소 힙(min-heap) 으로 동작합니다.즉, “가장 작은 값이 항상 맨 앞에 위치”하도록 유지해줍니다. 또한 정렬과 비교를 해보면, 정렬은 전체를 정리하지만, 힙은 "최소값만" 관리합니다. 정렬(sorted())은 모든 원소를 O(N log N) 시간에 정렬합니다.하지만 “가장 작은 값 하나”만 필요한 경우라면,힙은 O(log N) 만에 처리할 수 있습니다. 전체 코드입니다import.. 2025. 12. 1. [Python] 왈러스 연산자(:=) 안녕하세요. 오늘은 왈러스 연산자(:=) 에 대해 알아보겠습니다. 파이썬 3.8 버전에서 추가된 왈러스 연산자(:=)의 정식 명칭은 대입 표현식(Assignment Expression)입니다.이 연산자를 잘 활용하면 코드가 훨씬 간결해집니다. 왈러스 연산자(:=)기존 파이썬에서는 변수에 값을 할당하는 구문(=)과 값을 비교하는 조건문은 한 줄에 쓸 수 없었습니다. 반드시 할당을 먼저 하고, 그 다음 줄에서 비교해야 했죠. 하지만 왈러스 연산자를 사용하면 변수에 값을 할당하는 동시에, 그 값을 바로 반환할 수 있습니다.즉, 할당과 테스트(조건 검사)를 한 줄로 줄여줍니다. 사용 예시기존 방식 ( := 사용 X) 리스트의 길이를 구해서 변수 n에 담고, 그 n을 다시 if 문에서 검사해야 합니다. 코드가.. 2025. 11. 27. [Python] is와 ==의 차이 안녕하세요.오늘은 파이썬에서 두 변수를 비교할때 사용하는 값 비교(==)와 객체 비교(is), 그리고 이를 증명하는 id() 함수에 대해 알아보겠습니다. 파이썬 코드를 작성하다 보면 두 변수를 비교할 때가 많습니다. 보통은 등호 두 개(==)를 사용하지만, 가끔 is라는 연산자를 보게 됩니다.두 변수를 비교한다는 동일한 작업을 하는것 처럼 보여도, 파이썬 내부에서는 완전히 다른 로직으로 동작합니다. == 연산자: 값 비교( Equality)== 연산자는 동등성(Equality)을 비교합니다.즉, 내용물(Value)이 같은지를 확인합니다. list_a = [1, 2, 3]list_b = [1, 2, 3]print(list_a == list_b) # True (내용물이 같으니까) is 연산자 : 객체 비교.. 2025. 11. 26. [Python] uuid로 고유한 식별자(Unique ID) 만들기 안녕하세요.오늘은 uuid 활용해서 고유 식별자 만들기를 해보도록 하겠습니다. uuid는 Universally Unique Identifier의 약자로,“전 세계에서 겹치지 않는 고유한 ID”를 만들어주는 파이썬 내장 모듈입니다.즉,회원 가입 시 user_id,결제 요청 시 order_id,임시 파일 이름, 세션 키 등이런 곳에서 중복을 피하기 위해 uuid(고유 식별자) 를 사용합니다. 전체 코드입니다. main.pyimport uuid# 1. uuid4() - 랜덤 기반 UUIDu1 = uuid.uuid4()print("uuid4 (랜덤형):", u1)# 2. uuid1() - 시스템 시간 & MAC 주소 기반u2 = uuid.uuid1()print("uuid1 (시간+MAC 기반):", u2)# 3.. 2025. 11. 25. [Python] isinstance()로 변수 타입 확인하기 안녕하세요. 오늘은 파이썬 내장 함수인 isinstance()로 변수 타입을 확인해보겠습니다. 파이썬은 변수에 어떤 타입의 데이터든 담을 수 있는 동적 타이핑 언어입니다. 그래서 코드를 짜다 보면 변수에 들어간 정보가 숫자인지, 딕셔너리인지 확인이 필요한 경우가 발생합니다. 이때 type() 함수를 사용할 수도 있지만, isinstance() 를 사용하면 더 유연하게 변수 타입을 확인할 수 있습니다. isinstance() isinstance()는 어떤 객체(변수)가 특정 클래스(타입)의 인스턴스인지 True 또는 False 로 알려주는 파이썬 내장함수 입니다. 기본 문법isinstance(object, classinfo)- object: 검사할 대상 (변수, 값)- classinfo: 확인하.. 2025. 11. 23. [Python] abc 모듈과 @abstractmethod 로 추상클래스 만들기 안녕하세요. 오늘은 abc 모듈과 @abstractmethod 로 추상클래스를 만들어보겠습니다. 프로젝트 규모가 커지면서 특정 클래스를 상속받는 자식 클래스에 필수 메서드를 강제하고 싶을 때가 있습니다. 이럴때 abc 모듈을 활용하여 추상클래스를 만들 수 있습니다. ABC (Abstract Base Class) abc 모듈에서 가져오는 클래스입니다. 이 클래스를 상속받으면 해당 클래스는 "추상 클래스"가 됩니다.특징: 추상 클래스는 그 자체로는 객체(인스턴스)를 생성할 수 없습니다.오직 상속을 위한 부모 역할만 합니다. @abstractmethod 메서드 위에 붙이는 데코레이터입니다. 이게 붙은 메서드는 "껍데기" 뿐이고, 내용은 비워둡니다(pass).규칙: 부모 클래스에서 이 데코레이터가 붙은 메서.. 2025. 11. 20. [Python] Pydantic 라이브러리 BaseModel 클래스 - 데이터 유효성 검사 안녕하세요. 오늘은 파이썬의 Pydantic 라이브러리에 있는 BaseModel 클래스에 대해 알아보겠습니다. 파이썬은 변수의 타입을 강제하지 않는 동적 타이핑 언어입니다. 코드를 유연하게 작성하기에는 좋지만, 이로 인해 데이터 형식이 맞지 않아 런타임 에러가 발생하기도 합니다. 특히 API를 개발하거나 외부 데이터를 처리할 때, 데이터 형식을 확인하는 과정은 필수입니다. 이럴때 Pydantic 라이브러리와 BaseModel 를 활용하여 데이터 유효성 검사를 빠르게 할 수 있습니다. BaseModel BaseModel은 Pydantic라이브러리에서 데이터 모델을 정의할 때 상속받는 기본 클래스입니다. 파이썬의 타입 힌트 기능을 활용하여, 클래스 속성에 타임을 명시하면 아래의 기능을 자동으로 .. 2025. 11. 19. [Python] timeit 활용해서 코드 실행 속도 비교하기 안녕하세요오늘은 timeit 모듈 사용해서, 코드 실행 속도를 비교해보도록 하겠습니다. timeit은 파이썬 내장 모듈로,코드 조각의 실행 속도를 정밀하게 측정하는 도구입니다. 전체 코드입니다 main.pyimport timeit# 1. 테스트할 코드 조각 정의code_list = "[x**2 for x in range(1000)]" # 리스트 컴프리헨션code_loop = """result = []for x in range(1000): result.append(x**2)"""# 2. 각 코드를 10,000번 실행하여 평균 시간 측정time_list = timeit.timeit(stmt=code_list, number=10000)time_loop = timeit.timeit(stmt=code_lo.. 2025. 11. 18. 이전 1 2 3 4 ··· 17 다음