점프투파이썬 복습 내용 정리
http://codejob.co.kr/docs/view/2/
########################################################
03. 자료형과 제어문 » 1) 자료형 » [2] 문자열 (String)
print "=" * 50
a="abcd"
a.count(x)
a.upper()
a.lower()
a.find(x) -> if no existence, return -1
a.index(x) -> if no existence, error
a.join(s)
>>> a= ","
>>> a.join('abcd')
'a,b,c,d'
a.lstrip()
a.rstrip()
a.strip()
a.replace(s,r)
a.split([s])
a.swapcase()
########################################################
03. 자료형과 제어문 » 1) 자료형 » [3] 리스트 (List)
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
del a[1]
a.append(item)
a.sort()
a.reverse()
a.index(item) -> if no existence, error
a.insert(index#, item)
a.remove(index#)
b=a.pop([index#])
a.count(item)
a.extend(list) = a + list
########################################################
03. 자료형과 제어문 » 1) 자료형 » [4] 터플 (tuple)
tuple과 list의 차이점: tuple은 내용 변경 불가, list는 가능
########################################################
03. 자료형과 제어문 » 1) 자료형 » [5] 딕셔너리 (Dictionary)
dic = {Key1:Value1, Key2:Value2, Key3:Value3,,,,}
중복되는 키는 사용하지 말것
value = dic[key] or value = dic.get(key)
dic[newkey] = newvalue
del dic[key]
keylist = dic.keys()
valuelist = dic.values()
itemlist = dic.items() -> [(key1,val1),(key2,val2),...]
dic.clear()
dic.has_key(key) -> return True of False
########################################################
03. 자료형과 제어문 » 1) 자료형 » [6] 참과 거짓
False: "", [], (), {}, 0, None
a = range(10)
while a: print a.pop()
########################################################
03. 자료형과 제어문 » 1) 자료형 » [7] 변수
simple variable swap
a,b = b,a
list copy
a=[1,2,3]
b=a -> a의 reference 복사, 따라서 a를 바꾸면 b도 바뀜
value 복사를 위해서는 b=a[:]
또는
from copy import copy
b=copy(a)
동일 객체 판단
a is b -> True or False 반납받음
########################################################
03. 자료형과 제어문 » 2) 제어문 » [1] if문
03. 자료형과 제어문 » 2) 제어문 » [2] while문
03. 자료형과 제어문 » 2) 제어문 » [3] for문
x (not) in list/tuple/string
if <조건>:
elif <조건>:
else:
pass
continue
break
########################################################
04. 입출력 » 2) 입력과 출력
input() vs. raw_input()
input()은 숫자는 숫자로 받아들임
input()은 문자열의 경우 반드시 '' 나 "" 로 감싸줘야함
########################################################
04. 입출력 » 3) 파일 읽고 쓰기
라인단위 읽기
readline(), readlines() 라인 끝에 \n 까지 붙어있음
f.read()
f.write()
import sys
args = sys.argv[1:]
########################################################
05. 파이썬 날개달기 » 1) 클래스
빈 instance 생성
class Simple:
value = initial_value
def f(self, a, b): # 클래스 함수의 첫번째 변수는 항상 self
. . .
x=Simple()
print x.value
r = x(a,b) # self 안써도 됨
__init__(self, ...)
__del__(self)
상속
class B(A):
....
연산자 overloading
__add__(self, other)
__init__ 생성자(Constructor), 인스턴스가 만들어 질 때 호출
__del__ 소멸자(Destructor) 인스턴스가 사라질 때 호출
__add__ 연산자 "+" X + Y
__or__ 연산자 "|" X | Y
__repr__ print print X
__call__ 함수호출 X()했을 때 호출
__getattr__ 자격부여 X.메소드
__getitem__ 인덱싱 X[i]
__setitem__ 인덱스 치환 X[key] = value
__getslice__ 슬라이싱 X[i:j]
__cmp__ 비교 X > Y
########################################################
05. 파이썬 날개달기 » 2) 모듈
import 모듈이름
모듈이름.함수명()
from 모듈이름 import 함수명
함수명()
import 모듈이름 as 단축이름
단축이름.함수명()
if __name__ == "__main__":
import sys
sys.path
sys.path에 원하는 디렉토리 추가하면 모듈을 아무곳에서나 쓸 수 있다.
sys.path.append("c:\\z")
import mod2
....
reload(mod2)
이미 import 한 모듈에 변경 사항이 발생했을 경우
########################################################
05. 파이썬 날개달기 » 3) 예외처리
try:
...
except [발생에러[, 에러메시지변수]]:
...
에러 발생시키기 (raise)
class Bird:
def fly(self):
raise NotImplementedError
########################################################
05. 파이썬 날개달기 » 4) 라이브러리 » [1] 내장함수
abs()
char(i)
ord('a') -> ascii value return
cmp(x,y) 크기 비교
dir() 객체가 가지고 있는 변수나 함수 리스트
divmod(7,3) -> (2,1)
divmod(1.3, 0.2) -> (6.0, 0.099999999999999978)
enumerate
>>> for i, name in enumerate(['boby', 'foo', 'bar']):
... print i, name
...
0 boby
1 foo
2 bar
c=eval('1+2')
exec("c=1+2")
execfile('sum.py')
filter
#filter1.py
def positive(x):
return x > 0
####
print filter(positive, [1,-3,2,0,-5,6])
apply(function, (args))
lambda
>>> print filter(lambda x: x > 0, [1,-3,2,0,-5,6])
[1, 2, 6]
>>> sum = lambda a, b: a+b
>>> sum(3,4)
7
>>> l = [lambda a,b:a+b, lambda a,b:a*b]
>>> l
[at 0x811eb2c>, at 0x811eb64>]
동일한 결과를 다음 방식으로
def f1(a,b):
return a+b
def f2(a,b):
return a*b
f=[f1,f2]
f[0](3,4)
id(object)
v = input([msg])
v = raw_input([msg])
hex(number)
oct(number)
int()
long()
float()
str(object)
len(s)
pow(x,y)
max(s)
min(s)
range(start,stop,step)
sorted(list)
type(object)
zip(seq1,seq2)
>>> a=[1,2,3,4]
>>> b=[1,2,3]
>>> zip(a,b)
[(1, 1), (2, 2), (3, 3)]
tupel(sequence)
>>> tuple("abc")
('a', 'b', 'c')
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple((1,2,3))
(1, 2, 3)
isinstance(object, class) -> True or False
map
>>> def two_times(x): return x*2
>>> map(two_times, [1,2,3,4])
[2, 4, 6, 8]
>>> map(lambda a: a*2, [1,2,3,4])
[2, 4, 6, 8]
reduce(function, sequence) : pop(0) 하면서 리스트 생성
# reduce1.py
def test(x, y):
return x+y
###
def test2(x, y):
return x*y
###
print reduce(test, [1,2,3,4,5])
print reduce(test2, [1,2,3,4,5])
reload(module)
repr(object)
repr(object)은 객체를 출력할 수 있는 문자열 형태로 변환하여 돌려주는 함수이다. 이 변환된 값은 주로 eval 함수의 입력으로 쓰인다. str 함수와의 차이점이라면 str
으로 변환된 값은 eval의 입력값이 될 수 없는 경우가 있다는 것이다.
>>> repr("hi".upper())
"'HI'"
>>> eval(repr("hi".upper()))
'HI'
>>> eval(str("hi".upper()))
Traceback (innermost last):
File "", line 1, in ? eval(str("hi".upper()))
File "", line 0, in ?
NameError: There is no variable named 'HI'
########################################################
05. 파이썬 날개달기 » 4) 라이브러리 » [2] 외장함수
sys.argv
# argv_test.py
import sys
print sys.argv
sys.exit()
sys.path
>>> import sys
>>> sys.path
['', 'c:\python21', 'c:\python21\dlls', 'c:\python21\lib', 'c:\python21\l
ib\plat-win', 'c:\python21\lib\lib-tk']
pickle
>>> import pickle
>>> f = open("test.txt", 'w')
>>> data = {1: 'python', 2: 'you need'}
>>> pickle.dump(data, f)
>>> f.close()
>>> f = open("test.txt", 'r')
>>> data = pickle.load(f)
>>> print data
{2:'you need', 1:'python'}
>>> import string
>>> dir(string)
['_StringType', '__builtins__', '__doc__', '__file__', '__name__', '_float', '_idmap', '_idmapL', '_int',
'_long', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 'capwords',
'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 'index_error', 'join', 'joinfields',
'letters', 'ljust', 'lower', 'lowercase', 'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation',
'replace', 'rfind', 'rindex', 'rjust', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate',
'upper', 'uppercase', 'whitespace', 'zfill']
>>> string.split("you need python")
['you', 'need', 'python']
>>> "you need python".split()
['you', 'need', 'python']
>>> string.atof('3')
3.0
>>> string.zfill(3, 8)
'00000003'
>>> string.zfill('a', 3)
'00a'
>>> import StringIO # 메모리에 임시 파일 생성
>>> f = StringIO.StringIO()
>>> f.write("life is too short")
>>> value = f.getvalue()
>>> value
'life is too short'
>>> f.close() -> 메모리에 있는 파일 객체 없애버림
>>> import os
>>> os.environ
{'CMDLINE': 'WIN', 'PATH': 'C:\WINDOWS;C:\WINDOWS\COMMAND;C:\PROGRA~1\ULTRA
EDT;C:\JDK1.3\BIN;C:\ESSOLO.COM;C:\VIM\VIM\VIM57;C:\PYTHON21', 'BLASTER':
'A240 I10 D1', 'TEMP': 'C:\WINDOWS\TEMP', 'COMSPEC': 'C:\WINDOWS\COMMAND.CO
M', 'PROMPT': '$p$g', 'WINBOOTDIR': 'C:\WINDOWS', 'WINDIR': 'C:\WINDOWS', 'TMP
': 'C:\WINDOWS\TEMP'}
>>> os.chdir("C:\WINDOWS")
>>> os.getcwd()
>>> os.system("dir")
>>> files = os.popen("dir")
os.mkdir(디렉토리) 디렉토리를 생성한다.
os.rmdir(디렉토리) 디렉토리를 삭제한다.단, 디렉토리가 비어있어야 삭제가 가능하다.
os.unlink(파일) 파일을 지운다.
os.rename(src, dst) src라는 이름의 파일을 dst라는 이름으로 바꾼다.
>>> import shutil
>>> shutil.copy("src", "dst") # 파일 복사
>>> import glob
>>> glob.glob("C:\Python\Q*")
['C:\Python\quiz.py', 'C:\Python\quiz.py.bak']
>>> import tempfile
>>> filename = tempfile.mktemp() # 스스로 중복되지 않는 파일 생성
>>> filename
'C:\WINDOWS\TEMP\~-275151-0'
tempfile.TemporaryFile()은 임시적인 저장공간으로 사용될 파일 객체를 돌려준다. 기본적으로 w+b 의 모드를 갖는다. 이 파일객체는 f.close()가 호출될 때 자동으
로 사라지게 된다.
>>> import time
>>> time.time() # 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초단위로 돌려준다
988458015.73417199
>>> time.localtime(time.time())
(2001, 4, 28, 20, 48, 12, 5, 118, 0)
>>> time.asctime(time.localtime(time.time()))
'Sat Apr 28 20:50:20 2001'
>>> time.ctime()
'Sat Apr 28 20:56:31 2001'
time.strftime
time.strftime('출력할 형식포맷코드', time.localtime(time.time())) strftime 함수는 시간에 관계된 것을 세밀하게 표현할 수 있는 여러 가지 포맷코드를 제공해 준다
.
포맷코드 설명 예
%a 요일 줄임말 Mon
%A 요일 Monday
%b 달 줄임말 Jan
%B 달 January
%c 날짜와 시간을 출력함(로케일 설정에 의한 형식에 맞추어) 06/01/01 17:22:21
%d 날(day) [00,31]
%H 시간(hour)-24시간 출력 형태 [00,23]
%I 시간(hour)-12시간 출력 형태 [01,12]
%j 1년 중 누적 날짜 [001,366]
%m 달 [01,12]
%M 분 [01,59]
%p AM or PM AM
%S 초 [00,61]
%U 1년 중 누적 주-일요일을 시작으로 [00,53]
%w 숫자로 된 요일 [0(일요일),6]
%W 1년 중 누적 주-월요일을 시작으로 [00,53]
%x 현재 설정된 로케일에 기반한 날짜 출력 06/01/01
%X 현재 설정된 로케일에 기반한 시간 출력 17:22:21
%Y 년도 출력 2001
%Z 시간대 출력 대한민국 표준시
%% 문자 %
%y 세기부분을 제외한 년도 출력 01
>>> import time
>>> time.strftime('%x', time.localtime(time.time()))
'05/01/01'
>>> time.strftime('%c', time.localtime(time.time()))
'05/01/01 17:22:21'
# time.sleep()
for i in range(10):
print i
time.sleep(1)
>>> import calendar
>>> print calendar.calendar(2001)
>>> calendar.prcal(2001)
>>> calendar.weekday(2001, 4, 28) # return 요일, 0-Mon, 1-Tue...
>>> calendar.monthrange(2001,4)
(6, 30) # 4월1일의 요일과 총 일수
>>> import random
>>> random.random()
0.53840103305098674
>>> random.randint(1,10)
6
>>> random.seed(seednumber)
파이썬 쓰레드 (thread)
# thread_test.py
import thread
import time
def say(msg):
while 1:
print msg
time.sleep(1)
###
thread.start_new_thread(say, ('you',))
thread.start_new_thread(say, ('need',))
thread.start_new_thread(say, ('python',))
for i in range(100):
print i
time.sleep(0.1)
>>> import webbrowser
>>> webbrowser.open("http://www.yahoo.co.kr")
>>> webbrowser.open_new("http://www.yahoo.co.kr")
'Coding > Python Matlab' 카테고리의 다른 글
우분투에 ipython 사용환경 구축 (0) | 2013.02.12 |
---|---|
파이썬 - 팁 (0) | 2012.12.20 |
파이썬 - 우분투에 새 버전 설치 사용법 (0) | 2012.12.19 |
파이썬 - High-Resolution Mandelbrot in Obfuscated Python (0) | 2012.12.19 |
파이썬 - enumerate (0) | 2012.12.18 |