파이썬 스킬 업
기초를 넘어서, 파이썬 고수로 성장하는 첫걸음!
런타임 효율성, 고급 문법, 람다 함수, 정규표현식, 매직 메서드, 데이터 수집 및 시각화까지!
런타임 효율성부터 고급 문법, 람다 함수, 정규표현식, 매직 메서드 등 고급 주제를 필수 항목으로 분류하여 설명하며, 많이 사용되는 넘파이를 자세히 설명하고, 이 외에 랜덤과 수학 패키지를 포함한 유용한 여러 모듈도 함께 다룬다. 마지막으로 금융 상품의 원리금 및 이자율(단리/복리) 계산을 손쉽게 하고, 인터넷에서 금융 데이터 가져와 주가 변동을 통계 데이터와 함께 살펴보는 차트까지 만들어 본다. 이 책으로 파이썬 전체 기본 문법을 깊은 수준으로 처음부터 끝까지 훑어보면서 그 과정에서 학습한 내용을 점검하고, 빠진 부분을 채워넣을 수 있으며, 잘못 알고 있던 사실을 바로잡을 수 있다. 또한, 스킬 업할 수 있는 다양한 주제들도 함께 설명하므로 파이썬 기초를 익힌 후 다음 단계로 나아가고 싶은 모든 분에게 추천한다.
«파이썬 스킬 업»은 1~4장을 공개합니다.
전자책 구입
목차
- 1장 파이썬 기초 돌아보기
- 1.1 파이썬 빠르게 시작하기
- 1.2 변수와 이름 짓기
- 1.3 대입 연산자 조합
- 1.4 파이썬 산술 연산자 요약
- 1.5 기초 데이터 타입: 정수와 부동소수점
- 1.6 기본 입력과 출력
- 1.7 함수 정의
- 1.8 파이썬 if 문
- 1.9 파이썬 while 문
- 1.10 간단한 프로그램 작성하기
- 1.11 파이썬 불리언 연산자 요약
- 1.12 함수 인수와 반환값
- 1.13 선행 참조 문제
- 1.14 파이썬 문자열
- 1.15 파이썬 리스트(그리고 강력한 정렬 앱)
- 1.16 for 문과 범위
- 1.17 튜플
- 1.18 딕셔너리
- 1.19 세트
- 1.20 전역 변수와 지역 변수
- 1.21 정리해 보자
- 1.22 복습 문제
- 1.23 실습 문제
- 2장 고급 문자열 기능
- 2.1 문자열은 불변이다
- 2.2 바이너리를 포함한 숫자 변환
- 2.3 문자열 연산자(+, =, *, >, 기타)
- 2.4 인덱싱과 슬라이싱
- 2.5 단일-문자 함수(문자 코드)
- 2.6 ‘join’을 사용하여 만든 문자열
- 2.7 주요 문자열 함수
- 2.8 이진수와 10진수, 16진수 변환 함수
- 2.9 간단한 불리언(‘is’) 메서드
- 2.10 대·소문자 변환 메서드
- 2.11 검색-교체 메서드
- 2.12 ‘split’을 활용한 입력 값 쪼개기
- 2.13 앞뒤 문자 제거하기
- 2.14 자리 맞춤 메서드
- 2.15 정리해 보자
- 2.16 복습 문제
- 2.17 실습 문제
- 3장 고급 리스트 기능
- 3.1 파이썬 리스트 생성 및 활용
- 3.2 리스트 복사 vs 리스트 변수 복사
- 3.3 인덱스
- 3.3.1 양수 인덱스
- 3.3.2 음수 인덱스
- 3.3.3 enumerate 함수로 인덱스 숫자 생성
- 3.4 조각으로부터 데이터 가져오기
- 3.5 조각 안에 값 대입하기
- 3.6 리스트 연산자
- 3.7 얕은 복사 vs 깊은 복사
- 3.8 리스트 함수
- 3.9 리스트 메서드: 리스트 수정하기
- 3.10 리스트 메서드: 내용 정보 가져오기
- 3.11 리스트 메서드: 재편성하기
- 3.12 스택 역할을 하는 리스트: RPN 애플리케이션
- 3.13 reduce 함수
- 3.14 람다 함수
- 3.15 리스트 함축
- 3.16 딕셔너리와 세트의 함축
- 3.17 리스트를 통한 인수 전달하기
- 3.18 다차원 리스트
- 3.18.1 불균형 행렬
- 3.18.2 제멋대로 큰 행렬 만들기
- 3.19 정리해 보자
- 3.20 복습 문제
- 3.21 실습 문제
- 4장 지름길, 커맨드 라인, 그리고 패키지
- 4.1 개요
- 4.2 22가지 프로그래밍 지름길
- 4.2.1 필요하다면 코드를 여러 줄에 걸쳐 작성한다
- 4.2.2 for 루프는 현명하게 사용한다
- 4.2.3 대입 연산자 조합을 이해한다(예 +=)
- 4.2.4 다중 대입을 사용한다
- 4.2.5 튜플 대입을 사용한다
- 4.2.6 고급 튜플 대입을 사용한다
- 4.2.7 리스트와 문자열 ‘곱하기’를 사용한다
- 4.2.8 다중 값을 반환한다
- 4.2.9 루프와 else 키워드를 사용한다
- 4.2.10 불리언과 ‘not’의 이점을 활용한다
- 4.2.11 문자열은 문자의 나열로 다룬다
- 4.2.12 replace를 사용하여 문자를 제거한다
- 4.2.13 필요 없는 루프는 사용하지 않는다
- 4.2.14 연결된 비교 연산자를 사용한다
- 4.2.15 함수 테이블(리스트, 딕셔너리)로 switch 문을 모방한다
- 4.2.16 is 연산자는 정확하게 사용한다
- 4.2.17 단일 행 for 루프를 사용한다
- 4.2.18 여러 문장을 하나의 행으로 줄인다
- 4.2.19 단일 행 if/then/else 문을 작성한다
- 4.2.20 range와 함께 enum을 생성한다
- 4.2.21 IDLE 안에서 비효율적인 print 함수 사용을 줄인다
- 4.2.22 큰 번호 안에 언더스코어( _ )를 넣는다
- 4.3 커맨드 라인에서 파이썬 실행하기
- 4.3.1 윈도 기반 시스템에서 실행하기
- 4.3.2 macOS 시스템에서 실행하기
- 4.3.3 pip 혹은 pip3로 패키지 내려받기
- 4.4 doc string 작성하고 사용하기
- 4.5 패키지 탑재하기
- 4.6 파이썬 패키지의 가이드 투어
- 4.7 일급 객체인 함수
- 4.8 가변 길이 인수 리스트
- 4.8. 1 *args 리스트
- 4.8. 2 **kwargs 리스트
- 4.9 데코레이터와 함수 프로파일러
- 4.10 제너레이터
- 4.10.1 이터레이터란 무엇인가?
- 4.10.2 제너레이터 소개
- 4.11 커맨드 라인 인수 접근 하기
- 4.12 정리해 보자
- 4.13 복습 문제
- 4.14 실습 문제
- 5장 정밀하게 텍스트 포매팅하기
- 5.1 백분율 기호 연산자(%)를 사용한 포매팅
- 5.2 백분율 기호(%) 포맷 지시자
- 5.3 백분율 기호(%) 변수-너비 출력 필드
- 5.4 전역 ‘format’ 함수
- 5.5 format 메서드 소개
- 5.6 위치로 순서 정하기(이름 혹은 색인)
- 5.7 ‘repr’ vs 문자열 변환
- 5.8 ‘format’ 함수와 메서드의 ‘사양’ 필드
- 5.8.1 출력-필드 너비
- 5.8.2 텍스트 조정: ‘채우기’와 ‘자리 맞춤’ 문자
- 5.8. 3 ‘기호’ 문자
- 5.8.4 0으로 시작하는 문자(0)
- 5.8.5 천 단위 위치 구분자
- 5.8.6 정밀도 제어
- 5.8.7 문자열에서 사용한 ‘정밀도(잘라 내기)’
- 5.8. 8 ‘타입’ 지시자
- 5.8.9 이진수 출력하기
- 5.8.10 8진수와 16진수 출력하기
- 5.8.11 백분율 출력하기
- 5.8.12 이진수 예시
- 5.9 변수-길이 필드
- 5.10 정리해 보자
- 5.11 복습 문제
- 5.12 실습 문제
- 6장 정규표현식, 파트 Ⅰ
- 6.1 정규표현식의 소개
- 6.2 실제 예시: 전화번호
- 6.3 일치 패턴 정제하기
- 6.4 정규표현식 동작 방식: 컴파일 vs 실행
- 6.5 대·소문자 무시하기, 그리고 다른 함수 플래그
- 6.6 정규표현식: 기본 문법 요약
- 6.6.1 메타 문자
- 6.6.2 문자 집합
- 6.6.3 패턴 수량자
- 6.6.4 역추적, 탐욕적 수량자와 게으른 수량자
- 6.7 정규표현식 실습 예시
- 6.8 Match 객체 사용하기
- 6.9 패턴에 맞는 문자열 검색하기
- 6.10 반복하여 검색하기(findall)
- 6.11 findall 메서드와 그룹화 문제
- 6.12 반복 패턴 검색하기
- 6.13 텍스트 교체하기
- 6.14 정리해 보자
- 6.15 복습 문제
- 6.16 실습 문제
- 7장 정규표현식, 파트 Ⅱ
- 7.1 고급 정규표현식 문법의 요약
- 7.2 태그를 남기지 않는 그룹
- 7.2.1 표준 숫자 예시
- 7.2.2 태깅 문제 고치기
- 7.3 탐욕적 일치 vs 게으른 일치
- 7.4 전방탐색 기능
- 7.5 다중 패턴 확인하기(전방탐색)
- 7.6 부정적 전방탐색
- 7.7 명명 그룹
- 7.8 re.split 함수
- 7.9 스캐너 클래스와 RPN 프로젝트
- 7.10 RPN: 스캐너로 더 많은 작업 수행하기
- 7.11 정리해 보자
- 7.12 복습 문제
- 7.13 실습 문제
- 8장 텍스트와 바이너리 파일
- 8.1 두 가지 종류의 파일: 텍스트와 바이너리
- 8.1.1 텍스트 파일
- 8.1.2 바이너리 파일
- 8.2 바이너리 파일을 사용하는 경우: 요약
- 8.3 파일/디렉터리 시스템
- 8.4 파일을 열 때 발생하는 예외 다루기
- 8.5 ‘with’ 키워드 사용하기
- 8.6 읽기/쓰기 연산의 요약
- 8.7 텍스트 파일 작업 상세하게 알아보기
- 8.8 파일 포인터(‘seek’) 사용하기
- 8.9 RPN 프로젝트 안에서 텍스트 읽기
- 8.9.1 현재까지의 RPN 번역기
- 8.9.2 텍스트 파일의 RPN 읽기
- 8.9.3 RPN에 대입 연산자 추가하기
- 8.10 바이너리 직접 읽기/쓰기
- 8.11 데이터를 고정-길이 필드로 변환(struct)
- 8.11.1 한 번에 하나의 숫자 읽기/쓰기
- 8.11.2 한 번에 여러 숫자 읽기/쓰기
- 8.11.3 고정-길이 문자열 읽기/쓰기
- 8.11.4 변수-길이 문자열 읽기/쓰기
- 8.11.5 문자열과 숫자를 함께 읽기/쓰기
- 8.11.6 저수준 상세: 빅 엔디안 vs 리틀 엔디안
- 8.12 피클링 패키지 사용하기
- 8.13 shelve 패키지 사용하기
- 8.14 정리해 보자
- 8.15 복습 문제
- 8.16 실습 문제
- 9장 클래스와 매직 메서드
- 9.1 클래스와 객체 기본 문법
- 9.2 인스턴스 변수에 대해 더 알아보자
- 9.3 __init__ 메서드와 __new__ 메서드
- 9.4 클래스와 선행 참조 문제
- 9.5 메서드 기본
- 9.6 전역 변수/메서드와 지역 변수/메서드
- 9.7 상속
- 9.8 다중 상속
- 9.9 매직 메서드 개요
- 9.10 매직 메서드 상세
- 9.10.1 파이썬 클래스의 문자열 표현
- 9.10.2 객체 표현 메서드
- 9.10.3 비교 메서드
- 9.10.4 산술 연산자 메서드
- 9.10.5 단항 산술 연산자
- 9.10.6 리플렉션(역방향) 메서드
- 9.10.7 교체 연산자 메서드
- 9.10.8 변환 메서드
- 9.10.9 컬렉션 클래스 메서드
- 9.10.10 __iter__와 __next__ 구현하기
- 9.11 다중 인수 타입 지원
- 9.12 동적 속성 설정 및 조회
- 9.13 정리해 보자
- 9.14 복습 문제
- 9.15 실습 문제
- 10장 Decimal, Money, 그리고 기타 클래스
- 10.1 숫자 클래스의 개요
- 10.2 부동소수점 포맷의 제약 사항
- 10.3 Decimal 클래스 소개
- 10.4 Decimal 객체를 위한 특수 연산
- 10.5 Decimal 클래스 애플리케이션
- 10.6 Money 클래스 설계하기
- 10.7 기본 Money 클래스 작성하기(포함)
- 10.8 Money 객체 출력하기(“__str__”, “__repr__”)
- 10.9 기타 Money용 연산
- 10.10 데모: Money 계산기
- 10.11 기본 통화 설정하기
- 10.12 Money와 상속
- 10.13 Fraction 클래스
- 10.14 complex 클래스
- 10.15 정리해 보자
- 10.16 복습 문제
- 10.17 실습 문제
- 11장 random과 math 패키지
- 11.1 random 패키지의 개요
- 11.2 Random 함수 살펴보기
- 11.3 무작위 행동 테스트하기
- 11.4 무작위-정수 게임
- 11.5 카드 덱 객체 만들기
- 11.6 덱에 픽토그램 추가하기
- 11.7 정규 분포 차트 작성하기
- 11.8 나만의 난수 생성 프로그램 작성하기
- 11.8.1 난수 생성 원칙
- 11.8.2 샘플 생성기
- 11.9 math 패키지 개요
- 11.10 math 패키지 함수 살펴보기
- 11.11 특별 수치 pi 사용하기
- 11.12 삼각함수: 나무의 높이
- 11.13 로그: 숫자 맞추기 게임 돌아보기
- 11.13.1 로그의 동작 원리
- 11.13.2 실제 프로그램에 로그 적용하기
- 11.14 정리해 보자
- 11.15 복습 문제
- 11.16 실습 문제
- 12장 넘파이 패키지
- 12.1 array, numpy, matplotlib 패키지 개요
- 12.1.1 array 패키지
- 12.1.2 numpy 패키지
- 12.1.3 numpy.random 패키지
- 12.1.4 matplotlib 패키지
- 12.2 array 패키지 사용하기
- 12.3 numpy 패키지를 내려받고 탑재하기
- 12.4 numpy 소개: 1부터 100만까지 더하기
- 12.5 numpy 배열 만들기
- 12.5.1 array 함수(array로 변환)
- 12.5.2 arange 함수
- 12.5.3 linspace 함수
- 12.5.4 empty 함수
- 12.5.5 eye 함수
- 12.5.6 ones 함수
- 12.5.7 zeros 함수
- 12.5.8 full 함수
- 12.5.9 copy 함수
- 12.5.10 fromfunction 함수
- 12.6 예시: 곱셈표 만들기
- 12.7 numpy 배열의 배치 연산
- 12.8 numpy 슬라이스 정렬하기
- 12.9 다차원 슬라이싱
- 12.10 불리언 배열: numpy에 마스킹하기!
- 12.11 numpy와 에라토스테네스의 체
- 12.12 numpy 통계 구하기: 표준 편차
- 12.13 numpy 행과 열 가져오기
- 12.14 정리해 보자
- 12.15 복습 문제
- 12.16 실습 문제
- 13장 넘파이 고급 사용법
- 13.1 numpy의 고급 수학 연산
- 13.2 matplotlib 내려받기
- 13.3 numpy와 matplotlib으로 그래프 선 그리기
- 13.4 여러 선 그래프 그리기
- 13.5 복리 그래프 그리기
- 13.6 matplotlib으로 히스토그램 만들기
- 13.7 원과 가로세로 비율
- 13.8 파이 차트 만들기
- 13.9 numpy로 선형대수학 구현하기
- 13.9.1 점곱(dot product)3
- 13.9.2 외적 함수
- 13.9.3 기타 선형대수학 함수
- 13.10 3차원 플로팅
- 13.11 numpy 금융 애플리케이션
- 13.12 xticks와 yticks로 축 조정하기
- 13.13 numpy 혼합-데이터 레코드
- 13.14 파일에서 numpy 데이터 읽고 쓰기
- 13.15 정리해 보자
- 13.16 복습 문제
- 13.17 실습 문제
- 14장 여러 모듈과 RPN 예시
- 14.1 파이썬 모듈의 개요
- 14.2 간단한 2개의 모듈 예시
- 14.3 import 문의 변형
- 14.4 __all__ 기호 사용하기
- 14.5 전역과 지역 모듈 변수
- 14.6 메인 모듈과 __main__
- 14.7 상호 탑재 문제 해결하기
- 14.8 RPN 예시: 2개의 모듈로 나누기
- 14.9 RPN 예시: I/O 지침 추가하기
- 14.10 RPN 예시 추가 변경
- 14.10.1 줄-번호 확인 기능 추가하기
- 14.10.2 0이 아니면 이동하는 기능 추가하기
- 14.10.3 초과(>)와 난수 획득(!)
- 14.11 RPN: 모든 코드 모으기
- 14.12 정리해 보자
- 14.13 복습 문제
- 14.14 실습 문제
- 15장 인터넷에서 금융 데이터 가져오기
- 15.1 이 장의 계획
- 15.2 pandas 패키지 소개
- 15.3 stock_load: 간단한 데이터 리더
- 15.4 간단한 주식 차트 만들기
- 15.5 제목과 범례 추가하기
- 15.6 makeplot 함수 작성하기(리팩터링)
- 15.7 2개의 주식 시세를 함께 그래프로 그리기
- 15.8 응용: 다른 데이터 그래프 그리기
- 15.9 기간 제한하기
- 15.10 차트 쪼개기: 판매량 서브플롯
- 15.11 변동 평균 선 추가하기
- 15.12 사용자에게 선택권 넘기기
- 15.13 정리해 보자
- 15.14 복습 문제
- 15.15 실습 문제
- 부록 A 파이썬 연산자 우선순위 표
- 부록 B 내장 파이썬 함수
- 부록 C 세트 메서드
- 부록 D 딕셔너리 메서드
- 부록 E 문법 참고 자료
- E.1 변수와 대입
- E.2 파이썬의 빈칸 이슈
- E.3 알파벳 순서의 문법 참고 자료