21. 자료형 - Tuple2
declarations
tuple = ()
tuple = (1,’a’)
tuple = 1, ‘a’
functions
index(), count()
튜플은 immutable
리스트와 사용 방법이 같습니다.
immutable이기 때문에 요소를 수정
하는 함수는 제외됩니다.
22. 자료형 - Dictionary
declarations
dict = {‘k1’:’v1’, ‘k2’:2, 3:’v3’}
modifications
dict[‘k4’] = 4 #={‘k1’:’v1’, ‘k2’:2, 3:’
v3’, ‘k4’:4}
del dict[‘k4’]
cautions
key값으로 리스트나 딕셔너리, 셋
을 사용할 수 없습니다. 딕셔너리는
중복키를 허용하지 않는데, 리스트
와 딕셔셔너리, 셋은 immutable이
아니기 때문입니다.
25. 참과 거짓
자료구조에 경우
차있으면 참, 비어있으면 거짓
[1,2,3], ‘hi’ #= True
[], {}, (), ‘’ #= False
List, Dict, Set, Tuple 이 네 가지
자료구조는 비교연산 시 모든 요소
들의 값을 비교합니다. ->
값에 경우
0, None이 아닌 모든 값 #= True
0, None #= False
그러나 요소 중 instance타입이 있
다면 그것들이 완전히 같은 값을 갖
고 있다고 해도 다르게 봅니다.
26. 변수
a = 1;
b = 1;
a is b #=True
del a #=b변수가 제거됨.
del b #=a변수가 제거됨.
1의 reference count가 0이 되어 1
이 메모리에서 제거됨.
del 하지 않아도 지역변수는 알아서
GC됨.
27. In Python, whitespace is used to structure code.
def spam():
eggs = 12 #왼쪽처럼 반드시 들여쓰기
return eggs
공백(whitespace)
28. 조건문
declarations
if expression:
pass #아무 동작도 안 함
elif expression:
pass
else
print ‘else’
if expression: pass #한 줄짜리
comparation operators
==, !=, >, >=, <, <=, in, not in, is
logical operators
or, and, not
29. 반복문
declarations
while 1: #무한 루프
pass
break절
continue절
declarations
for i in 리스트:
pass
for i in range(0, 10): #0,1,2, … ,9
pass
for i, j, k in [[1,2,3],[4,5,6]]:
print i + j + k
31. sys모듈
$python basic.py aa bb
import sys
for arg in sys.argv:
print arg
#=‘basic.py’, ‘aa’, ‘bb’
입출력
input
str = raw_input(‘input :’)
output
같은 결과
1. print(‘i ‘ + ‘am ‘ + ‘a ‘ + ‘boy’)
2. print(‘i ” “am ” “a ” “boy”)
3. print(“i”, “am”, “a”, “boy”)
32. file output
f = open(‘newfile.txt’, w) #r,w,a
f.write(‘new content’);
f.close()
입출력8
file input
f = open(‘newfile.txt’, r)
f.readline() #=[‘line1’]
f.readlines() #=[‘line1’,’line2’, …]
f.read() #=’all data in file’
f.tell() #현재 위치
f.seek(0) #위치 이동
33. 클래스
definitions
class Calc(Parent): #Parent는 상속할 클래스
magic_num = 10 #클래스 변수, 반시 초기화해야 합니다.
__init__(self, name): #생성자를 정의했으므로 디폴트 생성자가 정의되지 않습니다.
self.name = name #self에 this객체가 들어옵니다. name은 인스턴스 변수
def set_name(self, name): #name변수 사용을 위해 반드시 먼저 name을 초기화
self.name = name #생성자에서 이미 초기화하므로 사실 set_name()은 필요 없
음.
def sum(self, a, b): #클래스 함수
return a + b
34. 클래스
definitions
class Calc:
magic_num = 10
__del__(self): #소멸자
print ‘i will be back’
>>> c = Calc()
>>> Calc.magic_num #=c.magic_num, 클래
스변수에 접근
>>> del c
overriding 지원함!
overloading 지원 안 함!
operator overroading만 지원!
function overroading이 필요할 땐
var args 기능을 사용합니다.
def func(* args) :
35. 클래스16
operation overloading
__add__(self, other) +(이항) A + B, A += B
__pos__(self) +(단항) +A
__sub__(self, other) - (이항) A - B, A -= B
__neg__(self) - (단항) -A
__mul__(self, other) * A * B, A *= B
__truediv__(self, other) / A / B, A /= B
__floordiv__(self, other) // A // B, A //= B
__mod__(self, other) % A % B, A %= B
__pow__(self, other) pow(), ** pow(A, B), A ** B
__lshift__(self, other) << A << B, A <<= B
__rshift__(self, other) >> A >> B, A >>= B
__and__(self, other) & A & B, A &= B
__xor__(self, other) ^ A ^ B, A ^= B
__or__(self, other) | A | B, A |= B
__invert__(self) ~ ~A
__abs__(self) abs() abs(A)
36. 모듈
usage
#def func() in mod.py
1. import mod
print mod.func()
#클래스도 같은 방법으로 이용
2. from mod import func
print func() #또는 import *
#def func() in 외부 경로의 mod.py
import sys
sys.path.append(외부 경로)
import mod
#메인 모듈 종료 후 다시 실행하면 path가 초
기화 됨.
37. 모듈
reload
import mod
#이 시점에 mod모듈이 수정됨.
mod.reload() #수정된 내용을 갱신
print mod.func()
#인터프리터로 실행 중일 때 유용
#인터프리터가 재실행 되면 당연히 자동 갱
신
#import를 한 번 더 호출해도 갱신 안 됨.
testing
if __name__ ==’__main__’
#이 모듈(파일)의 테스트 구문
#이 모듈을 import해서 사용하는 경
우에는 위에 if문이 False가 되기 때
문에 테스트용도로 사용합니다.
38. from 뒤엔 패키지 또는 모듈만 올 수 있습니다.
import 방법
1. import 패키지.패키지.모듈 #안 되는 듯
2. from 패키지.패키지 import 모듈 #모듈 사용
3. from 패키지.패키지.모듈 import 함수, 변수 등 #
모듈 내에서 import로 지정한 것을 사용
4. from 패키지.패키지.모듈 import * # 모듈 내 모든
것 사용
5. from 패키지.패키지 import * #패키지 내 모든 모
듈 사용, 단 해당 패키지의 __init__.py에 __all__
= ['모듈']이 기록되어 있아야 함.
패키지
pakage_a/
__init__.py
dir_a/
__init__.py
gogo.py
dir_b/
__init__.py
soso.py
__init__.py : 해당 디렉토리가 패키지
의 일부림을 알려는 역할
from ..패키지 import 모듈 #..은 상위
디렉토리, 즉 relative 패키지
39. try:
4 / 0
except ZeroDivisionError as e:
print(e)
try:
raise NotImplementedError
except NotImplementedError as e:
print(e)
예외 처리
FileNotFoundError: [Errno 2] No such
file or directory:
ZeroDivisionError: division by zero
IndexError: list index out of range
40. import os
os.environ
os.environ[‘PATH’]
os.chdir(‘/home/bssin’)
os.getcwd()
os.system(‘system command’)
os.popen() ??
os.mkdir()
os.rmdir()
os.unlink(‘filename’) #delete file
os.rename(‘src’, ‘dst’)
import shutil
shutil.copy("src", "dst")
외장 함수
import sys
sys.argv
sys.exit()
sys.path
sys.path.append()
import pickle
pickle.dump(data, f)
data = pickle.load(f)
import io
f = io.StringIO()
f.write(“aaa”), value = f.getvalue()
f.close()
등등등…
import random
import glob
import tempfile
import time
import datetime
import calendar
import _thead
import webbrowser
41. import datetime from datetime
now = datetime.now()
print now
print now.year
print now.month
print now.day
print now.hour
print now.minute
print now.second
날짜와 시간(datetime)