1. Python Basic Data Type
1.1 Number
a**b # 제곱
a//b # 몫
a%b # 나머지
1.2 String
>>> y = 3.42134234
>>> "{0:0.4f}".format(y) # 문자열포맷
'3.4213'
1.3 List
a = [1,2,3]
b = [4,5,6]
# 1. 리스트 더하기
>>> a + b : [1,2,3,4,5,6]
# 2. 리스트 반복
>>> a*3 : [1,2,3,1,2,3,1,2,3]
1.4 Tuple
-
튜플은 리스트와 달리 값을 변화시킬 수가 없다.
-
값이 바뀌지 않았으면 할때 리스트 대신 튜플사용
t1 = (1,) # ele가 하나일때는 ,붙여야함 t2 = 1,2,3 # 괄호 생략 가능
1.5 Dict
-
Hash 자료구조로 되어있어 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.
dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
1.6 Set
-
중복을 허용하지 않는다
-
순서가 없다. 따라서 인덱싱으로 set 안의 element 를
# generate set A = set([1,2,2,3]) # >> {1, 2, 3} B = set([1,3,4]) # indexing A[2] # >> TypeError: set object does not support indexing # operation A&B, A|B, A-B # methods A.remove(1) A.add('b') A.update(['a','b'])
1.7 Bool
- True/False 의 두가지 값만을 가질 수 있다.
2. Lambda
-
쓰고 버리는 일회용 함수로 간단한 기능을 일반적인 함수와 같이 정의해두고 쓰는게 아니라 필요한 곳에서 즉시 사용하고 버림
-
map(func, iterable), filter(func, iterable) 함수와 주로 함께 쓰임, map은 func를 iterable에 모두 적용한 결과를 리턴하고, filter는 iterable중 func를 만족하는 ele만 리턴함
# lambda arg리스트:표현식 으로 정의하여 사용
>> g = lambda x:x**2
>> g(8)
64
# map(func, iterable) 과 함께 쓰일 때
>>> list(map(lambda x:x+3, [1,2,3,4]))
[4, 5, 6, 7]
# filter(func, iterable)와 함께 쓰일 때
>>> list(filter(lambda x:x>0, range(-5,5)))
[1, 2, 3, 4]
3. init, call
- Class는 객체를 만들어내기 위한 설계도(틀)로서 연관된 변수와 메서드의 집합
- Object(객체) 는 클래스타입으로 선언되었을 때, Instance 는 그 객체가 메모리에 할당되어 실제 사용될 때
class A:
def __init__(self): # 객체를 생성할때 사용
print('init')
def __call__(self): # 마치 함수를 호출하는 것처럼 인스턴스를 호출할 수 있도록 만듦
print('call')
>>> a = A()
init
>>> a()
call
4. Decorator
-
함수를 arg로 받아서, 원본함수를 변경하지 않고 앞 뒤에 새로운 로직을 추가하는 경우가 자주 있음,
-
가령 아래와 같이 함수를 입력으로 받아 함수의 실행시간을 출력해주는 로직을 추가해서 사용할 수 있음
def time_check(func):
def new_func(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print('실행시간:', end_time-start_time)
return result
return new_func
def big_number(n):
return n**n**n
new_func = time_checker(big_number)
new_func(6)
- Decorator를 적용하여 이를 아래와 같이 바꿀 수 있다.
def time_check(func):
def new_func(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print('실행시간:', end_time-start_time)
return result
return new_func
@time_check
def big_number(n):
return n**n**n
big_number(6)
5. Method
-
instance method : 가장 흔히 쓰이는 메서드로 인스턴스 변수에 엑세스 할 수 있도록 첫번째 파라미터에 항상 self 를 갖는다.
-
static method : 정적 메서드는 이러한 self 파라미터를 갖지 않고 인스턴스 변수에 엑세스 할 수 없다. 따라서 보통 객체 필드와 독립적이지만 로직상 클래스내에 포함되는 메서드에 사용한다. 클래스 안에 있지만 일반 함수와 다를게 없이 그냥 클래스 인스턴스에서 호출할 수 있음. 인스턴스 메소드는 인스턴스 안의 멤버 변수의 값을 바꾸거나 하지만 정적 메서드는 그러지 못함.
-
class method : self 대신 클래스를 cls 라는 파라미터로 전달받아 클래스 변수에 엑세스 [참고]
6. Path
os.chdir('/opt/vidClassifier/classifier/')
sys.path.append('/opt/vidClassifier/classifier')