notice : 이 글은 2016.06.13에 작성된 글을 복원하였습니다.
지난주 파이썬 강좌를 듣고 온 후에 흥미가 생겨서 파이썬 기초 책을 구매하였습니다.
파이선으로 검색하면 위키독스가 많이 나오는데요. 위키독스 운영자가 집필한 책이 '점프 투 파이썬'입니다.
첫장을 넘기면 나오는 문구가 너무 인상적이네요.
"Life is too short, You need Python!"
"인생은 너무 짧으니, 파이썬이 필요해!"
저자가 운영하는 사이트를 참고하면서 읽으면 도움이 많이 될듯합니다.
- 코딩도장 : http://codingdojang.com/
- 위키독스 : https://wikidocs.net/
초급자 30일코스, 중급자 20일코스로 학습계획을 소개하고 있지만, 연습문제를 생략하고 빠르게 정독하면 5시간 정도면 독파 가능합니다.

01장 파이썬이란 무엇인가?
특징
- 무료지만 강력
- 간결
- 빠른 개발속도
할 수 있는 일
- 시스템 유틸리티 : 시스테 명령어 사용가능
- GUI 프로그램 : 기본모듈인 TKinter(티케이인터)를 사용
- 접착(glue) 언어 : C,C++ 결합
- 웹 프로그래밍 : Django 등을 사용
- 수치연산 : Numeric Python 이라는 수치연산 모듈 사용
- DB 프로그래밍 : pickle 모듈 사용
- 데이터 분석 : Pandas 모듈사용
- 사물인터넷 : 라즈베리파이 제어
설치하기
- 설치 : https://www.python.org/downloads/
- 파이선 에디터
- 파이참 : http://www.jetbrains.com/pycharm/download/
- 서브라임 텍스트 3 : https://www.sublimetext.com/3
02장 자료형
숫자형
- 정수(123),실수(123.45),복소수(1+2j), 8진수(0o34), 16진수(0x2A)
- 연산자 : 2 ** 3(2의 3승 = 8), 7 / 4 (7 나누기 4 = 1.75), 7 // 4 (7을 4로 나눈후 소수점 버림 = 1)
문자열 자료형
- 'string', "string", '''multi line''', """multi line"""
- 연산자 : +(연결), ("p"2 --> "pp")
- 인덱싱("kimstar"[0] --> 'k'), 슬라이싱("Life is short"[0:4] --> 'Life')
- 문자열 함수 : count(글자세기), find(위치 못찾으면 -1 리턴), index(위치 못찾으면 오류), join(문자열 삽입), upper(대문자 변환), lstrip/rstrip/strip(좌/우/양쪽 공백제거), replace(문자열 바꾸기), split(문자열 나누기)
리스트 자료형 (순서 있음)
- a = []
- b = [1,2,3]
- c = [1,2,'life','is']
- 함수 : append(추가), reverse(뒤집기), index(위치 찾기), insert(위치에 삽입), remove(제거), pop(마지막 요소 돌려주고 제거), extent(리스트에 리스트 추가하여 확장)
튜플 자료형 (immutable, 리스트와 거의 비슷)
- a = ()
- b = (1,) # 하나일때는 컴마 필요
- c = (1,2,3)
- d = ('a','b',('c','d'))
딕셔너리 자료형 (key & value, 순서없음, key는 중복안됨)
- dic = {'name':'kimstar', 'age':25}
- a = {1:'a'}
- a[2] = 'b' # {2:'b'}가 추가됨
- del a[2] # key가 2인 요소 삭제
- 함수 : keys(dict_keys 리턴), values(dict_values 리턴), clear(모두 지움), get(key로 value 구하기, default값 사용가능), in(key가 있는지 조사)
집합 자료형 (중복X, 순서X, in으로 탐색 빠름)
- a = set([1,2,3])
- l = list(a) # 리스트로 변환
- t = tuple(a) # 튜클로 변환
- 집합 활용 : &(교집합), |(합집합), -(차집합)
- 함수 : add(1개 추가), update(여러개 추가), remove(제거)
자료형의 참과 거짓
- 거짓 : 문자열(""), 리스트([]), 튜플(()), 딕셔너리({}), 숫자형(0), NONE
- 참 : 거짓이 아닌거
자료형의 값을 저장하는 공간, 변수
- 파이썬의 모든 자료형은 객체
- a = 3
- b = 3
- a is b # True를 리턴함, 3이라는 객체는 a,b가 참조하고 reference count는 2이다. reference count이 0이면 가비지컬렉션된다
- a,b = b,a # 두변수의 값을 바꿈
- a = b # shallow copy
- b = copy(a) # deep copy, copy 모듈 사용시
03장 제어문
if문
- if/else/elif
- {}를 안쓰고, indent(공백 or 탭)을 사용
- pass # 아무것도 안함
while문, for문
- break/continue 사용
- for문은 리스트 내포(list comprehension)을 사용하여 직관적으로 표현 가능
- result = [num * 3 for num in [1,2,3,4] if num % 2 == 0] # [3,6,9,12]
04장 입출력
함수
- def sum (a,b): return a+b
- def sum_many(*args): ~~~~ # 여러개의 인자 사용 가능
- def sum_and_mul(a,b): return a+b,a*b # 튜플을 리턴
- def say(nane,old,man=Ture): ~~~~ # man의 인자를 생략하면 디폴트값 사용, 디폴트 인자는 맨 뒤에 오게할것
사용자 입력과 출력
- a = input() #사용자 입력값을 a에 대입
- a = input("입력하세요")
- print(a)
- print("life", "is", "too short") # life is too short
파일 읽고 쓰기
- f = open("파일명", 'r') # r(읽기), w(쓰기), a(추가)
- line = f.readline() # 라인 읽기
- lines = f.readlines() # 모든 라인 읽어서 리스트로 반환
- data = f.read() # 전체 내용 읽기
- f = open("파일명", 'a')
- f.write("data") # 쓰기
- f.close() # 파일 닫기
입력 인수 처리
- args = sys.argv[1:] # import sys 하여 사용
05장 파이썬 날개 달기
클래스
- 예제
class Calulator:
def __int__(self):
self.result = 0
def adder(self, num):
self.result += num
return self.result
cat = Calculator()
print(cat.adder(3)) # 3
print(cat.adder(4)) # 7- 상속, 메서드 오버로딩, 연산자 오버로딩(add, mul, truediv 등)
모듈
- 동일한 경로 또는 PATH 또는 PYTHONPATH에 모듈 파일이 존재해야 함
- 예제
import mod1 # mod1.py를 불러오기
print(mod1.sum(3,4)) # mod1의 sum 함수 사용
a=mod1.Math() # mod1의 Math 클래스
print(a.solv(2)) # mod1의 Math 클래스의 solv 메소드 사용
from mod1 import sum # mod1.py의 sum 함수만 불러오기
print(sum(3,4)) # sum 함수 사용패키지
import game.sound.echo # game/sound/echo.py를 불러옴
game.sound.echo.echo_test()
from game.sound import echo # game/sound/echo.py를 불러옴
echo.echo_test()
from game.sound.echo import echo_test # game/sound/echo.py의 echo_test 함수를 불러옴
echo_test()패키지
import game.sound.echo # game/sound/echo.py를 불러옴
game.sound.echo.echo_test()
from game.sound import echo # game/sound/echo.py를 불러옴
echo.echo_test()
from game.sound.echo import echo_test # game/sound/echo.py의 echo_test 함수를 불러옴
echo_test()예외 처리
try:
f = open('없는파일.txt', 'r')
except FileNotFoundError as e:
print(str(e))
else:
data = f.read()
f.close()내장 함수
- abs : 절대값
- all : iterable 자료형을 인자로, 모두 참이면 True
- any : iterable 자료형을 인자로, 하나라도 참이면 True
- chr : 아스키값 출력
- dir : 객체가 가지고 있는 변수/함수를 보여줌
- divmod : 나누기의 몫,나머지를 튜플로 리턴
- enumerate : 순서있는 자료형(리스트,튜플,문자열)을 인자로, 인덱스를 포함한 enumerate 객체 리턴
- eval : 실행가능 문자열을 입력받아, 실행한 결과를 리턴
- filter : 필터할 함수와 반복가능 iterable 자료형을 인자로 받는다.
print(list(filter(lambda x: x>0, [1,-2,3,-4]))) # [1,3]- hex : 정수를 16진수로 변환
- id : 객체의 주소값(레퍼런스)를 리턴
- input : 사용자 입력
- int : 정수로 변환, int('1A', 16)은 16진수 1A를 10진수 정수로 변환
- instance : 상속받았으면 True
- lambda : 람다, 함수를 간격하게 만듬
sum = lambda a,b: a+b
sum(3,4) # 7- len : 요소의 길이
- list : iterable 자료형을 list로 변환
- map : 함수와 iterable 자료형을 인자로, 자료형의 각 요소에 함수를 실행하여 결과를 묶어서 리턴
- max/min : iterable 자료형의 최대값/최소값
- oct : 정수를 8진수로
- open : 파일 열기
- ord : 문자의 아스키값을 리턴
- pow : pow(x,y)는 x의 y제곱한 결과
- range : 입력받은 범위의 값을 iterable 자료형으로 리턴, range(5)는 [0,1,2,3,4]를 리턴
- sorted : iterable 자료형을 정렬하여 리턴, sort()는 iterable 자료형을 정렬할뿐 리턴값 없음
- str : 문자열로 변환
- truple : iterable 자료형을 튜플로 변환
- type : 자료형을 알려줌
- zip : 자료형을 묶어줌. list(zip([1,2],[3,4]))는 [(1,3),(2,4)]를 리턴
외장 함수
- sys : 파이썬 인터프리터가 제공하는 변수들과 함수들을 제어할 수 있게 하는 모듈
- sys.argv : 명령행의 인수 전달
- sys.exit() : 강제 종료
- sys.path : 파이썬 저장 모듈 위치
- pickle : 객체를 파일에 저장/읽기
- pickle.dump(data,f) : 객체를 파일에 저장
- pickle.load(f) : 객체를 파일에서 읽기
- os : os 자원의 사용
- os.environ(): 환경변수를 딕셔너리로 반환
- os.chdir("경로"): 현재 디렉토리 변경
- os.getcwd(): 현재 디렉토리 리턴
- os.시스템("dir") : 시스템 명령어 실행
- f = os.popen("dir"): 시스템 명령어 실행를 파일로
- time : 시간
- time.time() : UTC를 사용하여 현재시간을 실수로 반환
- time.ctime() : 현재시간을 문자열로
- time.strftime("포멧", time.localtime(time.time())) : 현재 시간을 포멧에 맞춰 출력
- time.sleep(초) : sleep
- 기타 모듈
- shutil.copy("a.txt", "b.txt") : 파일을 복사
- glob.glob("c:\p*") : p로 시작하는 파일들을 모두 리턴함
- filename = tempfile.mktemp() : 임시파일을 생성. close()하면 파일 사라짐
- calandar.calandar(2016) : 2016년 달력을 출력
- random.randint(1,10) : 1~10 정수형 난수를 리턴
- webbrowser.open("주소") : 웹브라우저 실행





