빠르게 활용하는 파이썬 3.6 프로그래밍

기초 예제부터 라즈베리 파이, 알렉사, 텔레그램 봇까지 만들면서 배우는

처음 프로그래밍을 시작하는 분들에게 파이썬은 매우 적합한 언어입니다. C나 자바 등의 언어에 비해 매우 배우기 쉽고, 윈도우나 유닉스 등 여러 운영체제에서도 큰 수정 없이 잘 동작합니다. 이 책은 기초 문법부터 실생활에 유용하게 활용할 수 있는 실전 예제까지 자세하게 설명하고 있어, 파이썬을 처음 접하는 초보자는 물론 중급 이상의 개발 경험자들에게도 충분히 유용한 책이 될 것입니다.

이 책의 구성은 다음과 같습니다.

  • [1부 문법] 자세한 설명과 간단한 예제를 통해 파이썬 기본 문법을 이해합니다.
  • [2부 중요 모듈] 자주 쓰이고 유용한 모듈에 대해 친절한 예제와 함께 살펴봅니다.
  • [3부 실전 프로젝트] 머신러닝, 아마존 알렉사, 텔레그램 봇, 미세먼지 측정기 등 다양한 프로젝트를 수행합니다.

 

상세 이미지

신호철

삼성전자를 거쳐 SK planet에서 개발자로 근무 중이며, 어떻게 하면 70세까지 즐겁게 개발할 수 있을지 고심 중이다. 저서로는 『빠르게 활용하는 SQLite3』 『IT Cookbook for beginner C++ 기초』 『쉽게 따라 하는 모바일 웹 개발』 등이 있다.

최동진

자전거 타는 프로그래머, 삼성전자 무선사업부에서 근무하고 있으며 모바일 S/W 관련 업무를 하고 있다. 반복적인 작업과 간단한 유틸리티는 파이썬으로 프로그램을 만들어 쓸 정도로 파이썬을 애용하고 있다.

우상정

KAIST 석사. 개발은 기술이 아니라 사람이 하는 것이란 생각에, 사람을 공부하는 프로그래머이다. 게으름이 천성이라 스크립트 언어로 쉽게 업무를 즐기며, 새로운 기술에 자주 매료되곤 한다. 저서로는 『빠르게 활용하는 SQLite3』가 있으며, 역서로는 『소프트웨어 아키텍트가 알아야 할 97가지』가 있다.

  • [1부] 문법
    • ▣ 01장: 파이썬 개요 및 설치
      • 1.1 파이썬이란?
      • 1.2 파이썬의 특징
      • 1.3 파이썬의 종류
      • 1.4 파이썬이 쓰이는 프로젝트들
      • 1.5 2.x와 3의 차이
      • 1.6 설치 및 개발환경
      • 1.7 Hello world
      • 1.8 들여쓰기에 대해서
      • 1.9 소스코드 인코딩
      • 1.10 기타 파이썬 문법
      • 1.11 2.x를 3으로 변경하기
      •  
    • ▣ 02장: 자료형 및 연산자
      • 2.1 변수명
      • 2.2 수치
      • 2.3 문자
      • 2.4 유니코드
      • 2.5 리스트
      • 2.6 세트
      • 2.7 튜플
      • 2.8 사전
      • 2.9 부울
      • 2.10 얕은 복사와 깊은 복사
      •  
    • ▣ 03장: 함수
      • 3.1 함수의 정의
      • 3.2 return
      • 3.3 인자 전달
      • 3.4 스코핑 룰
      • 3.5 함수 인자
      • 3.6 람다 함수
      • 3.7 재귀적 함수 호출
      • 3.8 pass
      • 3.9 doc 속성과 help 함수
      • 3.10 이터레이터
      • 3.11 제너레이터
      •  
    • ▣ 04장: 제어
      • 4.1 if 문
      • 4.2 조건식의 참/거짓 판단
      • 4.3 단축 평가
      • 4.4 while 문
      • 4.5 for 문
      • 4.6 break, continue 그리고 else
      • 4.7 제어문과 연관된 유용한 함수
      •  
    • ▣ 05장: 클래스
      • 5.1 클래스 이야기
      • 5.2 클래스 선언 95
      • 5.3 클래스 객체와 인스턴스 객체의 이름공간
      • 5.4 클래스 객체와 인스턴스 객체의 관계
      • 5.5 생성자, 소멸자 메서드
      • 5.6 정적 메서드, 클래스 메서드
      • 5.7 연산자 중복 정의
      • 5.8 상속
      •  
    • ▣ 06장: 모듈
      • 6.1 모듈 사용하기
      • 6.2 모듈 만들기
      • 6.3 모듈의 경로
      • 6.4 모듈 임포트
      • 6.5 모듈 임포트 파헤치기
      • 6.6 main을 사용한 유용한 팁
      • 6.7 패키지
      •  
    • ▣ 07장: 예외 처리
      • 7.1 구문 에러
      • 7.2 예외
      • 7.3 예외 처리
      • 7.4 raise 구문
      • 7.5 사용자정의 예외
      • 7.6 assert 구문
      •  
    • ▣ 08장: 입출력
      • 8.1 표준 입출력
      • 8.2 파일 입출력
      • 8.3 pickle
      •  
    • ▣ 09장: C/C++와의 연동
      • 9.1 왜 확장 모듈이 필요한가?
      • 9.2 간단한 확장 모듈 예제
      • 9.3 모듈 초기화
      • 9.4 모듈 빌드
      • 9.5 파이썬/C API
      • 9.6 에러 처리
      • 9.7 레퍼런스 카운트
      • 9.8 확장 타입
      • 9.9 ctypes
      •  
  • [2부] 중요 모듈
    • ▣ 10장: 문자열 다루기
      • 10.1 파이썬이란?
      • 10.2 정규 표현식(re) 모듈
      •  
    • ▣ 11장: 날짜 이야기
      • 11.1 시간(time) 모듈
      • 11.2 날짜시간(datetime) 모듈
      •  
    • ▣ 12장: 숫자 이야기
      • 12.1 수학(math) 모듈
      • 12.2 분수 모듈
      • 12.3 십진법 모듈
      • 12.4 랜덤 모듈
      •  
    • ▣ 13장: 파일 시스템을 자유자재로
      • 13.1 os.path
      • 13.2 glob
      • 13.3 tree 예제
      •  
    • ▣ 14장: 데이터베이스
      • 14.1 데이터베이스 연결
      • 14.2 SQL문 수행
      • 14.3 레코드 조회
      • 14.4 트랜잭션 처리
      • 14.5 레코드 정렬과 사용자 정렬 함수
      • 14.6 SQLite3 내장 집계 함수
      • 14.7 사용자정의 집계 함수
      • 14.8 자료형
      • 14.9 사용자정의 자료형
      • 14.10 데이터베이스 덤프 만들기
      • 14.11 명령어 프롬프트에서 SQLite3 관리하기
      •  
    • ▣ 15장: 운영체제 관련 주요 모듈
      • 15.1 os 모듈
      • 15.2 sys 모듈
      • 15.3 threading 모듈
      • 15.4 queue 모듈
      • 15.5 weakref 모듈
      •  
    • ▣ 16장: XML
      • 16.1 파이썬과 XML
      • 16.2 XML 문서 파싱하기
      • 16.3 노드
      • 16.4 엘리먼트
      • 16.5 엘리먼트 쉽게 다루기
      • 16.6 XML 문서를 HTML로 변환하기
      • 16.7 도서 관리 프로그램
      •  
    • ▣ 17장: 파이썬과 인터넷
      • 17.1 파이썬이 지원하는 네트워크, 인터넷 모듈
      • 17.2 OpenAPI를 이용해 책 정보 가져오기
      • 17.3 파이썬으로 이메일 보내기
      • 17.4 웹 서버 만들기
      •  
    • ▣ 18장: 더 견고한 코드 만들기
      • 18.1 단위 테스트(unittest)
      • 18.2 pydoc
      • 18.3 doctest
      •  
    • ▣ 19장: distutils를 이용한 배포
      • 19.1 도서 관리 프로그램 배포
      • 19.2 setup.py 파일 작성
      • 19.3 확장 모듈 배포
      • 19.4 Setup Configuration 파일 작성 방법
      •  
    • ▣ 20장: 파이썬3를 활용한 통계 분석 - 선형 회귀
      • 20.1 회귀분석이란?
      • 20.2 관련 모듈 설치
      • 20.3 회귀분석 예제
      •  
    • ▣ 21장: pypy
      • 21.1 pypy란?
      • 21.2 pypy 설치 및 테스트
      • 21.3 pypy의 호환성
      •  
    • ▣ 22장: 구글 앱 엔진과 구글 클라우드 플랫폼
      • 22.1 구글 앱 엔진이란?
      • 22.2 구글 앱 엔진과 파이썬
      • 22.3 앱 엔진 개발 환경
      • 22.4 Hello World 앱 생성 및 배포
      • 22.5 플라스크
      • 22.6 구글 클라우드 소스 저장소
      • 22.7 구글 클라우드 데이터스토어
      • 22.8 북마크 애플리케이션
      • 22.9 Standard 환경에서의 북마크 애플리케이션
      •  
  • [3부] 실전 프로젝트
    • ▣ 23장: 머신러닝 - 결정 트리(Decision Tree)를 기반으로 운동 경기 결과 예측하기
      • 23.1 지도 학습이란
      • 23.2 개발 환경 설정: scikit-learn과 pandas
      • 23.3 분류 문제와 결정 트리
      • 23.4 교차 검증
      • 23.5 데이터 수집 및 전처리
      • 23.6 결정 트리를 이용한 NBA 경기 결과 예측
      •  
    • ▣ 24장: 아마존 알렉사 기반의 음성 서비스 개발하기
      • 24.1 알렉사 음성 서비스
      • 24.2 알렉사 스킬
      • 24.3 아마존 에코와 echosim.io 서비스
      • 24.4 개발 환경 설정: Flask-ask와 ngrok
      • 24.5 Hello Alexa 서비스 개발
      • 24.6 숫자 야구 게임
      •  
    • ▣ 25장: 부동산 텔레그램봇
      • 25.1 챗봇 준비하기
      • 25.2 챗봇 만들기 - 부동산 정보 애플리케이션
      •  
    • ▣ 26장: 라즈베리파이로 미세먼지 측정기 만들기
      • 26.1 라즈베리파이에 라즈비안 설치 및 설정하기
      • 26.2 라즈베리파이 GPIO와 디지털 입출력(Digital Input/Output)
      • 26.3 시리얼 통신을 사용해 라즈베리파이에 연결된 장치 제어하기
      • 26.4 트랜지스터를 이용한 전류 제어
      • 26.5 미세먼지 측정기 만들기
      • 26.6 미세먼지 앱 애플리케이션 만들기
      •  
    • ▣ 부록 A: Pydev 설치와 사용법
      • A.1 Pydev 설치 방법
      • A.2 Pydev를 이용해 개발하기
      •  
    • ▣ 부록 B: pdb 모듈을 이용한 디버깅
      • B.1 디버깅용 코드 작성
      • B.2 pdb 실행과 종료
      • B.3 소스코드와 실행 위치 보기
      • B.4 브레이크 포인트 설정하기
      • B.5 코드를 수행하며 변수값 확인하기
      • B.6 도움말
      •  
    • ▣ 부록 C: pip를 이용한 패키지 관리와 virtualenv
      • C.1 pip 설치
      • C.2 설치된 패키지 검색
      • C.3 패키지 검색
      • C.4 패키지 설치
      • C.5 패키지 업그레이드
      • C.6 패키지 삭제
      • C.7 가상 환경의 패키지 설정 저장 및 복원
      • C.8 virtualenv를 활용한 파이썬 가상 개발 환경 구축

예제코드 관련 GitHub 페이지

  • 57쪽, 밑에서 7번째 줄

    ['g', 'i', 'r', 'e', 'n', 'a', 't', 'o']
    

    ==>

    ['g', 'i', 'r', 'l', 'e', 'n', 'a', 't', 'o']
    
  • 59쪽, 본문 6번째 줄

    인수로 입력 받은 리스트의 원소를 하나씩 입력받은 함수에 적용시키고 결과를 새로운 리스트로 넘겨줍니다.

    ==>

    순회 가능한 객체의 원소를 입력받은 함수에 하나씩 적용한 결과를 넘겨줍니다.

  • 59쪽, 하단 예제 코드를 다음 코드로 대체

    >>> def sqrt(x):
            x = x*x
            return x
    
    >>> list(map(sqrt,[1,2,3,4,5]))
    
        [1, 4, 9, 16, 25]
    
    >>> list(map(lambda x:x**2, [1,2,3,4,5]))
    
        [1, 4, 9, 16, 25]
    
  • 62쪽, 밑에서 6번째 줄

    2n-1번의 이동으로 ==> 2n-1번의 이동으로

  • 62쪽, 밑에서 5번째 줄

    264-1초가 걸립니다. ==> 264-1초가 걸립니다.

  • 68쪽, 본문 3번째 줄

    만약 yield 대신 return을 사용했다면 f만 4개가 출력될 것입니다.

    ==>

    만약 yield 대신 return을 사용했다면 f가 1개만 출력될 것입니다.

  • 105쪽, 본문 밑에서 3번째 줄

    예를 들어 클래스부터 ==> 예를 들어 클래스로부터

  • 117쪽, 페이지 하단 뱀잡기의 코드

    >>> Person.__bases__
    (<class 'object'>,)
    (<class '__main__.Person'>,)
    

    ==>

    >>> Person.__bases__
    (<class 'object'>,)
    >>> Student.__bases__
    (<class '__main__.Person'>,)
    
  • 139쪽, 두 번째 예제 코드의 7번째 줄

    set 모듈에서 이름이 union인 함수를 임포트

    ==>

    simpleset 모듈에서 이름이 union인 함수를 임포트

  • 201쪽, 본문 밑에서 7번째 줄

    메모리 관리를 소홀히 하면 프로그램이 비정상적으로 종료되거나 잘 못된 주소에 데이터를 써서 여기서 memory corruption 도 다른 곳과 마찮가지로 파란색 윗 첨자로 바꾸는게 좋을 것 같습니다.

    ==>

    메모리 관리를 소홀히 하면 프로그램이 비정상적으로 종료되거나 잘못된 주소에 데이터를 써서 프로그램의 데이터가 망가지는 경우(memory corruption)가 생깁니다.

  • 325쪽, 본문 중간의 참고 박스

    다음 예제 코드는 ‘from os.path import *’

    ==>

    다음 예제 코드는 ‘from os import *’

  • 329쪽, 마지막 줄

    디렉터리에 (mode & ~umask)와 같이

    ==>

    디렉터리에 (mode & ~mask)와 같이