반응형 프로그래밍 기초/Python15 [Python] 참조와 복사 import copy a=[1,2,[3,4]] ##참조 (c의 포인터와 유사)b=a b[1]=5print a #a도 변경됨print b ##얕은 복사c=list(a) c.append(5)print a #a에는 원소가 추가되지 않음print cc[2][1]=44print a #기존 원소의 객체는 변경됨print c ##깊은 복사d=copy.deepcopy(a) d[2][1]=999print a #변경되지 않음print d 2016. 3. 13. [Python] 모듈화 ##모듈 1 : mod1.pydef modfunc1(a,b): return a+b ##모듈 2 : mod2.pydef modfunc2(a,b): return a-b ##모듈 3 : mod3.pydef modfunc3(a,b): return a*b ##메인 : main.py import mod1import mod2 as alias_mod #모듈 별칭 설정from mod3 import modfunc3 #모듈의 특정 함수,클래스 등을 현재 네임스페이스에 등록 (전체는 *) print mod1.modfunc1(2,3)print alias_mod.modfunc2(5,3)print modfunc3(3,3) 2016. 3. 13. [Python] 클래스 class mycls(object): #() 안의 값은 상속받을 클래스 "mycls is tutorial class" #클래스 문서화 문자열 def __init__(self): #클래스 초기화 함수 print "class initialize" def func1(self,txt): #class의 함수들의 첫번째 파라미터는 객체 자신을 가리키는 값 (통상적으로 self를 사용) print "func1 : %s" % txt def func2(self): print "func2" mc=mycls()print mc.__doc__mc.func1("gogo")mc.func2()if isinstance(mc,mycls): #객체 인스턴스의 객체 타입 확인 print "mc is mycls object" del mc #.. 2016. 3. 13. [Python] 코루틴 def cor(txt): print "coroutine start" while True: line = (yield) #send로 전달받은 값을 line에 저장 if txt in line: print line c=cor("py") #코루틴 초기화 c.next() #코루틴 실행c.send("show me the money") #코루틴에 값 전달c.send("snoopy")c.send("black sheep wall")c.send("python")c.close() #코루틴 종료 2016. 3. 13. [Python] 예외처리 def trys(x,y): try: x / y if y == 100: raise ValueError #강제로 예외 발생 elif y == 99: raise NameError #except에 명시적으로 정의되지 않은 예외 발생 except ZeroDivisionError: #처리할 예외 타입 지정 print "ZeroDivisionError Occurred" except TypeError as e: #예외 내용을 e에 저장 print "TypeError Occurred : %s" % e except (IndentationError,ValueError): #처리할 예외를 다수 지정 print "IndentationError or ValueError Occurred" except: #기본 예외 처리 print.. 2016. 3. 8. [Python] 생성기 def gene(n): print "Generator start" while n < 10: yield n #현재 n 값을 반환, 생성기 자체는 종료되지 않고 멈춰있음 n += 1 print "Generator end" for i in gene(1): #순차적으로 생성기 호출 (next) print i r=1g=gene(6) while r 2016. 3. 8. [Python] 파일 입출력 f=open("C:\Windows\System32\drivers\etc\hosts") #파일 객체 생성f2=open("out.log","w") line=f.readline() #파일 read while line: print line, # ,는 줄바꿈 생략 #print(line,end='') #파이썬3 print >>f2,line # f2에 line 내용 출력 #print(line,file=f2) #파이썬3 line=f.readline()f.close() for line2 in open("C:\Windows\System32\drivers\etc\hosts_tmp"): print line2, 2016. 3. 2. [Python] 함수 count=0 def func(a,b=1): #두번째 인수에 기본값 설정 "func() is tutorial function" #함수 문서화 문자열 global count #전역 변수를 함수 내에서 사용 count += 1 print "call count : %d" % count print a,"+",b return a+b print func(4,5) print func(9) print func.__doc__ 2016. 3. 2. [Python] 튜플 (생성 후 데이터 추가/변경/삭제 불가) tuple1 = ("123","456",789,"data") item1,item2,item3,item4 = tuple1 #차례대로 데이터 대입 tuple2 = ( ) #빈 튜플 생성tuple3 = ("123",) #1개 요소 튜플 생성tuple4 = "123", #1개 요소 튜플 생성 2016. 3. 2. [Python] 집합 (데이터 순서 없음, 중복값 없음) set1 = set([1,2,3,4])set2 = set("hello") #중복값은 제거됨 (helo) set1.add(5) #값 1개 추가set1.update([6,7,8]) #값 여러개 추가 set2.remove('e') #값 제거 set1 | set2 #합집합set1 & set2 #교집합set1 - set2 #차집합set1 ^ set2 #대칭차집합 (교집합 반대) 2016. 3. 2. [Python] 사전 dic1 = {"item1" : "123", "item2" : 456, "item3" : "data"}dic2 = {} #빈 사전 생성dic3 = dict() #빈 사전 생성 dic1["item4"] = "data2" #키 추가del dic1["item3"] #키 삭제 if "item2" in dic1: #사전에 해당 키가 있는지 확인 i=dic1["item2"]else: i=0 j=dic1.get("item2",0) #위 if 문과 결과 동일 keys=list(dic1) #키 목록 추출 2016. 3. 2. [Python] 리스트 list1 = ["123","456","abc"] list1[0]#색인은 0부터 (0~2) list1.append("new data")#새 항목 추가 list1.insert(1,"ins")#idx 1위치에 항목 추가 list1[1:2]#idx 1부터 idx 2 이전까지 (idx 1만 출력) list1[1:]#idx 1부터 끝까지 list2=[]#빈 리스트 생성list3=list()#빈 리스트 생성 2016. 3. 2. [Python] 반복문 data1 = range(1,10) #1~9의 값을 가지는 리스트 생성data2 = 0 for i in data1: print i while data2 < 10: data2+=1 if data2 % 2: print data2, #홀수면 출력 else: continue #짝수면 아래 구문 무시하고 반복문 다시 진행 if data2 == 7: break #data2가 7이면 반복문을 빠져나옴 2016. 3. 2. [Python] 조건문 #조건문a=1b=2c=3d=4s="show me the money" x=[1,2]y=[1,2] if a < b: print "bbbb"elif b < a: print "aaaa"else: print "aabb" if a < b and b < c and not (d < c): print "dddd" if "money" in s: # 좌측 문자열이 우측 문자열 또는 객체에 포함되어있는지 확인 print "money in string" if x is y: #동일한 객체인지 비교 print "x and y is same object" if x == y: #객체의 값이 같은지 비교 print "x's value and y's value is same" if type(x) is type(y): #객체의 타입이 같은.. 2016. 3. 2. [Python] 입출력 (stdin, stdout) import sys i=0.5353s="text"t=sys.argv[0] #명령줄 인수를 읽어옴 print "Hello World %.2f %d" % (i,2016)# 파이썬 3에서는 print 다음에 ()가 들어감 ex: print("Hello World %.2f %d" % (i,2016)) print "file name is %s" % (t) print format(i,"10.2f"),format(s,"20s"),"123" #format 함수의 2번째 인자는 포맷지정자 sys.stdout.write("input : ")t=sys.stdin.readline() print t t= raw_input("input : ") # input("input : ") #파이썬3print t 2016. 3. 1. 이전 1 다음 반응형