Zero to Hero
article thumbnail
파이썬 크래시 코드
Review 2023. 8. 27. 10:41

코딩 입문 언어로 파이썬을 많이 추천한다. 비교적 문법이 쉽고 자유로우면서도 표준 라이브러리에 강력한 기능들이 많기 때문이다. 하지만 어떻게 파이썬을 배울지에 대해서는 여러 가지 의견이 있을 수 있는데 이 책이 그 답이 될 거라고 생각한다. 파이썬의 내부 구현 등 언어 자체에 관심이 있는 사람이거나 전공자, 혹은 실무자가 읽기는 가볍다. 하지만 입문자, 특히 코딩과 개발이라는 게 무엇을 하는 건지 정도만 알고 있는 그런 분들에는 최고의 선택이 아닐까 싶다. 이 책은 기본 편, 실습 편으로 구성되고 두 개의 책으로 소분되는 구조다. 나는 기본 편을 중점적으로 읽었는데 파이썬을 처음 배울 때 이 책으로 시작했으면 참 좋았겠다는 생각이 들었다. 굉장히 친절하고 코딩 입문자가 궁금해할 법한 부분까지는 딱 짚어주..

코딩을 지탱하는 기술 04
Review 2021. 1. 23. 14:56

변수와 함수를 합쳐서 모형을 만드는 법 1. 모듈, 패키지 2. 퍼스트 클래스: 함수를 해쉬에 넣기 3. 클로저 4. 클래스 상속 1. 일반화/특수화 부모 클래스로 일반적인 기능을 구현하고 자식 클래스로 목적에 특화된 기능을 구현하는 접근 자식 클래스는 부모 클래스를 특수화하는 설계 방법 2. 공통부분을 추출 복수 클래스의 공통부분을 부모 클래스로서 추출하는 접근법 자식 클래스는 부모 클래스의 일종이라고 할 수 없다. 3. 차분 구현 상속 후 변경된 부분만을 구현하면 효율이 좋다는 접근법. 상속을 재사용을 위해 사용하는 방법. 자식 클래스는 부모 클래스의 일종이라고 할 수 없다. 단점 1. 상속을 많이 사용하면 코드가 복잡해진다. 2. 상속이 많을수록 깊은 상속 트리가 만들어지고, 이것은 프로그램을 이해..

코딩을 지탱하는 기술 03
Review 2021. 1. 23. 14:35

병행처리 복수의 처리를 시간축 상에 오버랩에서 실행하는 것 협력적 멀티태스크 한 프로세스가 처리가 완료되는 시점에 자발적으로 처리 교대를 하는 방법 모든 처리가 최적의 간격으로 교대한다는 이상적인 상황을 기반으로 성립하는 시스템. 일반적으로는 기아 상태가 발생한다. Windows 3.1, Mac OS 9이 이 방식을 채택했다. 프로그램이 버그로 인해 무한 반복되는 상황이 되면 동시에 실행한 다른 프로그램에게는 처리 기회가 가지 않고 전부 묶어서 백업을 해버렸다. 선점적 멀티태스크 개별 프로그램과 다른 또 다른 프로그램인 "스케줄러"를 통해 일정 시간마다 지금 실행되고 있는 처리를 강제적으로 중단시켜서 다른 프로그램이 실행될 수 있도록 하는 방법 선점적(preemptive) 멀티태스크라고도 한다. Wind..

코딩을 지탱하는 기술 01
Review 2021. 1. 23. 13:47

Stack Machine 작동 및 연산에 스택을 사용하는 장치 혹은 기법 -> 후위 표기법(postorder) 1과 2를 더한 것에 3을 곱하다 -> 1 2 + 3 * 2와 3을 곱한 후 1을 더한다 -> 2 3 * 1 + Java, Python의 VM 형태도 스택 머신의 형태를 띤다. Python의 dis 라이브러리를 이용하면 VM이 실행할 명령 열을 출력할 수 있다. LISP 괄호로 시작해서 명령어가 맨 앞에 나온다. 그다음 공란으로 간격을 만들고 무엇을 더할 것인지를 기술한다. -> 전위 표기법(preorder) 1과 2를 더한다 -> (+ 1 2) 1과 2를 더한 후 3을 곱한다 -> (* (+ 1 2) 3 ) Python의 ast 라이브러리를 이용하면 특정 코드가 어떤 구문 트릴로 구성되어 있는..

내가 주로 사용하는 Python 문법(20.12.20 기준)
Algorithm 2020. 12. 20. 09:23

변수 관련 # 한 줄에 변수를 2개 이상 선언할 수 있다 a, b = 10, 20 # 자료구조도 마찬가지 c, d = [], [] # *args 문법 board = [1, 2, 3, 4, 5] a, *b, c = board # a=1, b=[2,3,4], c=5 # swap a, b = 5, 10 a, b = b, a # a=10, b=5 list 조작 1 # map board = [1, 2, 3, 4, 5] new_board = list(map(lambda x: x * 2, board)) # new_board = [2,4,6,8,10] # filter board = [1, 2, 3, 4, 5] new_board = list(filter(lambda x: x > 2, board)) # new_board ..