[Python] Python Script File 실행해보기
·
Programming
1. Python Script File (=main script file)의 구조다음은 일반적인 Python script file의 전형적인 구조를 간략히 나타냄. (고정된 것은 아님.)이미 구현된 기능 등을 사용하기 위해 외부 library 와 module을 import함.코드의 재사용성과 가독성 등을 위해 반복되는 code들을 function이나 class로 정의.main script (=main program)으로 동작하는 경우에 수행될 script에 해당하는 main function 작성.일반적으로 main 함수는 초기화 및 user input에 대한 처리 등으로 시작.이후 입력된 data들에 대해 processing을 수행 (2번에 정의한 function 및 class의 instance사용)처리..
[Python] Assignment와 Shallow Copy, Deep Copy
·
Programming
Shallow Copy와 Deep Copy Python에서 assignment를 수행될 때, 오른쪽이 reference (즉 variable이 =연산자 우측에 있음)인 경우 기본적으로 Shallow Copy가 발생한다. 하지만 특정 경우에는 Deep Copy 가 필요한 경우가 있기 때문에 이 둘의 차이를 명확히 알고 있는 것이 중요하다. 이 둘의 차이는 다음 그림이 간략하게 설명해 준다. Shallow copy가 일어났다면 왼쪽의 경우처럼 실제 데이터가 있는 메모리영역 Referenced Object가 공유되고 이를 참조하는 새로운 Cloned Object가 만들어진다. 때문에 실제로는 같은 Object를 가리키고 있기 때문에 Original Object에서 수정이 일어나면 해당 수정사항이 Cloned ..
[Programming] Garbage Collection (GC)
·
Programming
Garbage collection (GC)은 Programming에서 memory를 관리하는 기법 중의 하나임. Dynamical Memory Allocation에서 더 이상 사용되지 않는 object 또는 data에 할당된 memory를 자동으로 회수하는 Process를 의미한다. GC를 지원하지않는 C, C++ 등의 프로그래밍 언어에서는 일반적으로 programmer가 memory의 할당과 해제를 explicitly(명시적으로) 처리해야하며, 이를 잘못 수행하여 발생하는 memory leakage는 100% programmer의 책임이었음. Pointer와 함께 이 명시적인 memory 관리 는 Programmer에게 강력한 권한을 주면서 동시에 미숙한 programmer들의 잘못된 처리로 인해 프로..
[Python] recursive call : Fibonacci Sequence
·
Programming
Recursive call의 경우, 특정 함수가 내부에서 자기자신을 다시 호출하는 것을 가르킴. 다음과 같은 재귀적인 수식을 있는 그대로 작성하게 해준다는 장점은 있지만, 속도 및 메모리 사용 등의 측면에서는 그리 환영받지는 못함 (때문에 많이 사용되지 않음). $$ f(t) = f(t-1) + ... $$ $f(t)$를 정의하는데에 같은 함수가 사용되는 경우를 recursive call로 작성하면 매우 직관적인 구현이 가능하다. 대표적인 예로 Fibonacci sequence를 들 수 있다. $$ f(0) = 0, \\ f(1) = f(2) = 1 \\ f(n) = f(n-1) + f(n-2) \text{ , where }n >2 $$ Python 구현 : Recursive call 이용한 경우. de..
[OpenCV] imshow 창설정 및 종료 처리 (x버튼 처리)
·
Programming/DIP
imshow 창설정 및 종료 처리 (x버튼 처리)창 설정 관련 arguments 및 options cv2.namedWindow를 통해 미리 창에 대한 title을 지정하여 놓을 수 있음.cv2.namedWindow('image', cv2.WINDOW_NORMAL)# Using resizeWindow() : Below code does not works with cv2.WINDOW_AUTOSIZE# cv2.resizeWindow("image", 300, 700)cv2.WINDOW_AUTOSIZE가 기본으로 2nd argument없이 호출시 선택됨.읽어들이는 image 크기에 맞춰 window의 크기가 결정됨.2nd argument로 cv2.WINDOW_NORMAL를 설정시 window의 크기 조정이 가능함..
[Basic] Literal
·
Programming
Literal 소스 코드 상에서 고정된 값을 가르킴. (또는 고정된 값을 나타내는 표기법을 의미함.) Programming language에서 data의 값을 지정(specifying data values)하는 방법은 다음 중의 하나임. 1. Literal을 사용. 2. Variable을 사용 (constant variable포함). literal 은 문자 그대로 라는 뜻을 가짐. Python에서 literal은 Object임. C에서는 primitive datatype의 변수에 할당되는 값들을 주로 의미하나, Python에서는 literal도 object(객체)이다. 다음 코드는 x라는 변수에 9라는 값을 할당(assignment)을 의미함. x = 9 위의 코드에서 9 가 바로 literal이다. l..