본문 바로가기

분류 전체보기1656

[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.
[PHP] 메모리 관리와 가비지 컬렉션 - unset, 순환 참조, gc_collect_cycles 등을 통한 메모리 누수 방지. PHP는 기본적으로 참조 횟수 계산 방식을 사용하여 메모리를 관리합니다.이 변수를 보고 있는 사람이 0명이면 메모리에서 지운다 라는 개념이며치명적인 약점이 있는데, 바로 서로가 서로를 참조할 때(순환 참조)'입니다. 1. 참조 카운팅변수를 unset() 하면 참조 카운트가 줄어들고, 0이 되면 즉시 메모리가 해제됩니다.echo "시작 메모리: " . memory_get_usage() . " bytes\n";$data = range(1, 100000); // 큰 배열 생성 (메모리 증가)echo "배열 생성 후: " . memory_get_usage() . " bytes\n";unset($data); // 변수 제거 -> 참조 카운트 0 -> 메모리 즉시 해제echo "unset 후: " . memory_.. 2025. 11. 30.
[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.
[PHP] Magic Methods (__call, __get, __invoke) 매직 메소드(Magic Methods)는 PHP 클래스 내에서 특정 이벤트가 발생할 때 자동으로 호출되는 예약된 메소드들입니다. 이를 활용하면 간결한 객체 지향 코드를 작성할 수 있습니다. __get($name) 정의: 접근할 수 없는 속성(private, protected)이나 존재하지 않는 속성을 읽으려고 할 때 자동으로 호출됩니다. 용도: 속성을 동적으로 생성하거나, Private 속성을 읽기 전용(Read-only)으로 외부에 노출할 때 유용합니다. class UserProfile{ // 실제 데이터는 이 배열에 저장됩니다. private array $data = []; // 데이터를 설정하는 메소드 (일반 메소드) public function setInfo(string $k.. 2025. 11. 24.
[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.