본문 바로가기

Python/자료구조 (Data Structure)

(8)
6-2. 좋은 습관, 단위 테스트: 파이썬 자료구조와 알고리즘 좋은 습관 가상환경 프로젝트가 많아질수록 다양한 버전의 파이썬이나 라이브러리로 작업하는 일이 생긴다. 별도의 파이썬 가상 환경을 만들기 위한 라이브러리는 많다. virtualenv 와 virtualenvwrapper로 파이썬 가상 환경을 간단하게 만들어보자. virtualenv & virtualenvwrapper virtualenv 는 파이썬 프로젝트에 필요한 패키지를 사용하기 위해 필요한 모든 실행파일을 포함하는 폴더를 생성한다. virtualenvwrapper 는 virtualenv를 사용하여 모든 가상 환경을 한곳에 배치한다. 디버깅 파이썬 디버거, pdb 를 사용하면 디버깅을 할 수 있다. 파이썬 스크립트 파일을 대화식 인터프리터에 사용해 살펴보고 싶다면, -i 뒤 또는 -m pdb 뒤에 파일명을..
6-1. 멀티 프로세스와 멀티 스레드 (Multi-process and Multi-thread): 파이썬 자료구조와 알고리즘 멀티 프로세스와 멀티 스레드 운영 체제에서 실행되는 각 프로그램은 각가이 별도의 프로세스 (process) 이다. 각 프로세스에는 하나 이상의 스레드 (thread) 가 있다. 프로세스란, 자기 자신만의 주소 공간을 갖는 독립적인 (Self-contained) 실행 프로그램이다. 스레드란, 프로세스 내의 독립적인 순차흐름 또는 제어이고, 멀티 스레드란 하나의 프로세스에서 여러 개의 스레드가 병행적으로 처리되는 것을 말한다. 한 프로세스에 여러 개의 스레드가 있다면, 마치 여러 작업을 동시에 수행하는 것처럼 보인다. 멀티 프로세스와 멀티 스레드라는 두 가지 방법을 사용하면 프로그램의 작업 부하를 분산시킬 수 있다. 멀티 프로세스 멀티 프로세스는 별도의 메모리 영역을 가지며, 특별한 메커니즘 (예: 시그널,..
5-2. 디자인 패턴 (Design Pattern): 파이썬 자료구조와 알고리즘 디자인 패턴 (design pattern) 은 잘 설계된 구조의 형식적 정의이다. 다양한 디자인 패턴이 있으며, 이들을 사용해 서로 다른 문제를 해결할 수 있다. 데커레이터 패턴 데커레이터 (decorator) 패턴은 @ 표기를 사용해 함수 또는 메서드의 변환을 우아하게 지정해주는 도구다. 데커레이터 패턴은 함수의 객체와 함수를 변경하는 다른 객체의 래핑 (wrapping) 을 혀용한다. 즉 클래스 내의 메서드를 재정의 하지 않고도 자동으로 다른 함수와 래핑 시켜준다. 아래는 구글 파이썬 스타일 가이드의 예제이다. class C(object): @my_decorator def method(self): #메서드... 이는 아래와 같은 코드이다. class C(object): def method(self):..
5-1. 클래스와 객체 (Class and Object): 파이썬 자료구조와 알고리즘 프로그래밍에서 객체란 흔히 붕어빵과 붕어빵틀로 비유하는, 유사한 속성들을 가진 물체들을 클래스라는 사전 정의로 정의한 후 사용하는 것들을 뜻하는 용어이다. 클래스와 객체 클래스 (class) 란, 사전에 정의된 특별한 데이터와 메서드의 집합이다. 클래스에 선언된 모양 크대로 생성된 실체를 객체 (object) 라고 한다. 그리고 그 객체가 소프트웨어에 실체화될 때 (즉, 메모리에 할당되어 사용될 때), 이를 인스턴스 (instance) 라고 한다. 객체는 인스턴스를 포함하며, 포괄적인 의미를 가진다. 파이썬에서 가장 간단한 클래스는 다음과 같이 만들 수 있다. >>> class BoongEoBbang: pass >>> x = BoongEoBbang() >>> x 클래스 인스턴스 생성 클래스 인스턴스 생성..
4. 구조와 모듈 (Structure and Module): 파이썬 자료구조와 알고리즘 모듈 파이썬에서 모듈 (module) 은 def 를 사용하여 정의한다. def가 실행되면, 함수의 객체와 참조가 같이 생성되며, 반환값을 정의하지 않으면 자동으로 None을 반환하도록 한다 (None은 다른 언어들의 null 과 같은 개념이다). C언어처럼 아무것도 반환하지 않는 함수는 프로시저 (procedure) 라고 부른다. 스택과 활성화 레코드 함수가 호출될 때마다 활성화 레코드 (activation record) 가 생성된다. 활성화 레코드에는 함수의 정보 (반환값, 매개변수, 지역 변수, 반환 주소 등) 가 기록되며 이를 스택 (stack) 에 저장한다. 이는 다음 순서로 처리된다. 함수의 실제 매개변수를 스택에 저장 (push) 한다. 반환 주소를 스택에 저장한다. 스택의 최상위 인덱스를 함..
3. 컬렉션 (Collection): 파이썬 자료구조와 알고리즘 https://github.com/beomseok-kang/DSA-examples 에서 예제에 대한 내가 쓴 답을 볼 수 있다. 컬렉션 (collection) 자료구조는 시퀀스 자료구조와 달리, 데이터를 서로 연관시키지 않고 (relating) 모아두는 컨테이너이다. 컬렉션 자료구조는 시퀀스 자료구조가 갖던 속성 중 아래 세 가지 속성을 지닌다. 멤버십 연산자: in 크기 함수: len(seq) 반복성: 반복문의 데이터를 순회 파이썬의 내장 컬렉션 (collection) 데이터 타입은 셋 (set) 과 딕셔너리 (dictionary) 가 있다. 셋 (Set) 파이썬의 셋 (set) 은 반복 가능하고, 가변적 (mutable) 이며, 중복 요소가 없고 정렬되지 않은 컬렉션 데이터 타입이다. 셋은 멤버십 테..
2. 시퀀스 (Sequence): 파이썬 자료구조와 알고리즘 https://github.com/beomseok-kang/DSA-examples 에서 예제에 대한 내가 쓴 답을 볼 수 있다. 이번에는 파이썬의 시퀀스 (sequence) 데이터 타입을 알아본다. 파이썬의 시퀀스 타입들은 다음과 같은 속성들을 가진다. 멤버십 (membership) 연산: in 키워드를 사용한 연산 크기 (size) 함수: 예) len(seq) 슬라이싱 (slicing) 속성: 예) seq[ :-1 ] 반복성 (iterability): 반복문에 있는 데이터를 순회할 수 있음. 파이썬에는 5개의 내장 시퀀스 타입이 있다. 이들은 문자열 (string) 튜플 (tuple) 리스트 (list) 바이트 배열 (bytearray) 바이트 (byte type) 이다. 깊은 복사와 슬라이싱 연산 가..
1. 숫자 (Number): 파이썬 자료구조와 알고리즘 https://github.com/beomseok-kang/DSA-examples 에서 예제에 대한 내 답을 볼 수 있다. 인간에게는 10개의 손가락을 바탕으로 시작했던 10진법 (decimal) 이 가장 익숙하다. 그러나 컴퓨터는 전자상태의 신호인 참/거짓 (1과 0)을 사용한 이진법 (binary) 이 더 적합하다. 따라서 이를 통해 컴퓨터는 정보를 비트 (bit) 로 표현한다. bit가 8개 모이면 byte, byte가 2^10개 모이면 kilobyte 등등... 숫자는 세가지 형태로 나타날 수 있다. 정수 (integer), 부동소수점 (float), 그리고 복소수 (complex) 로 나타낼 수 있다. 파이썬에서 불변형 객체 (immutable object) 란 변수와 객체 참조 간제 차이가 없..