Python (6) 썸네일형 리스트형 재귀 & 추상클래스 1. 재귀의 이해 재귀함수: 스스로를 호출하는 함수이다. 주요한 이유: 재귀함수를 모르면 못푸는 문제 유형들이 매우 중요하기 때문이다. 예) DFS, BFS, 트리순회(traversal) def rec(n): if n ==0: return 0 else: return n + rec(n-1) print(rec(4)) # 4+3+2+1+0 = 10 def rec2(n): if n= n: return n-1 return fib(n-1)+fib(n-2) 2. 클래스 심화 0. 상속 되짚기 Animal -> cat, dog 1. 메서드 오버라이딩 서브 클래스에서 상위클래스의 메서드를 재정의 하는 것을 의미한다. 이름은 같지만 다른 기능을 수행하고 싶을 때, 기능추가/수정 하고싶을 때 사용한다. django에서의 오.. 객체지향 프로그래밍 객체지향 프로그래밍에 대하여 등장 배경 초기의 프로그래밍은 절차지향 패러다임하에 있었다. 프로그램은 반복문 조건문 goto문 등으로 이루어진 하나의 긴 흐름과 같았다. 이런 방식에는 문제가 많았다. 동일한 논리구조여도 값이 바뀔 때 마다 코드를 수정해야한다. 기존의 로직을 다시 사용하게 될때, 다시 코딩을 하거나 직접 복붙해야 한다. 동일한 로직의 코드가 많아지고 코드가 갈어져 유지보수가 어렵다. 이를 해결하기 위해 다익스트라가 프로그램을 우리가 익숙한 '함수' 단위로 나누고 그 함수끼리 호출하는 새로운 패러다임을 제시한다. 그러나 이 방식에도 여전히 한계가 존재했다. 메소드만 가지고는 많은 양의 로직을 처리하기에는 한계가 있다. 한 문서 내에 메소드의 수가 많아질 경우 추후 유지 보수에 많은 어려움이 .. 파이썬 패키지 관리 파이선 패키지 관리 주의: 파일 이름을 모듈과 같은 이름으로 짓지 마라. 파이선, 장고등의 키워드로 이름을 짓지 말라. 모듈vs패키지vs라이브러리 모듈: 파이썬 코드의 정의와 선언이 담겨있는, 즉 실행가능한 파이썬 파일. 패키지: 모듈들이 모여있는 namespace. (.으로 타고들어가는거) 라이브러리: 미리 준비된 패키지와 모듈의 모음PIP 파이선의 패키지를 관리하는 도구 install, search, 버전지정(==), uninstallpip install SomePackage #설치 pip search SomePackage #패키지 검색 pip install SomePackage==1.0.4 #특정 버전 지정해 설치 pip uninstall SomePackage #삭제 pip freeze # 현재 설.. Asyncio, coroutine #coroutine sub-routine: 종속되어있는 루틴. 함수도 서브 루틴에 포함된다. co-roution: 협력적으로 실행되는 루틴. 비동기 실행에서 사용된다. 실행중인 함수를 잠시 멈추고 나중에 실행을 재생할 수 있다. # 서브루틴 예시 def func(a): return a+1 a=1 b=func(a) print(b) 서브루틴은 결국 순차적으로 처리되는 것이나 다름없다.(동기처리) 반대로 비동기 프로그래밍은 여러 작업을 동시에 처리할 수 있다. 코루틴 Vs. 멀티 스레딩 스레드는 운영체제에 의해 관리되면서 여러 작업을 수행하며 각 스레드는 메모리상에서 자체 스택을 가지고 있어서 독립적인 흐름을 가진다. 멀티 프로세싱에 비해 오버헤드가 적고 자원 공유가 쉽지만 공유하는 자원으로 인해 동기화 문제.. 프로세스,스레드,멀티프로세싱, 멀티 스레딩 프로세스 프로세스는 기본적으로 메모리에 적재된다.(페이징을 통해 보조저장장치에 일부 저장되어있는 경우도 있다.) 사용자가 볼수 있는 공간에서 실행되느냐 아니냐에 따라 Foreground Process, Background process로 나뉜다. 백그라운드 프로세스중 대다수는 사용자와 직접 상호작용을하지 않고 정해진 일만 수행한다.(데몬/서비스) 포그라운드 프로세스가 백그라운드 프로세스로 전환될 때는 보통 사용자와 직접 상호작용을 할 수 있는 상태이다. 커널 영역에서의 관리 프로세스 제어블록(PCB) 프로세스 실행에는 CPU의 사용이 필요하지만 CPU는 한정된 리소스이다. 따라서 빠르게 번갈아 가며 한정된 시간동안만 사용해야하기 때문에 각 프로세스마다 고유한, 프로세스의 관련 정보를 저장하는 자료구조 P.. 각 타입별 중요 메소드 23.04.24 1. 문자열 #### string #### # count : 서브 스트링의 등장 횟수를 센다. changsoo = "Hello Changsoo!" count_ = changsoo.count('o') print(count_) # 3 # find : 서브 스트링의 첫 시작지점을 반환한다. 없으면 -1 반환 find_ = changsoo.find('oo') print(find_) # 12 find_ = changsoo.find('o0') print(find_) # -1 # index : 서브 스트링의 첫 시작지점을 반환한다. 없으면 에러 find_ = changsoo.index('oo') print(find_) # 12 try: find.. 이전 1 다음