Kaist 머신러닝 엔지니어 부트캠프/Study

Python 관련

yssy431 2022. 5. 12. 20:49

1. Python 교육 (Days 2,3)

기존 알고 있던 개념들은 제외하고 조금 더 정확하게 알게 된 정보들을 정리

1) Class

'''python
class Test(object): # object python의 기본 내장 클래스, 선언하지 않아도 됨
var = 'Study' # 클래스 속성(attribute) 사용하지 않는 것이 좋다 why? 모든 객체(instance)가 같은 값을 참조

def __init__(self): #생성자
    #class를 호출시 무조건 생성자에 있는 것을 실행한다. 보통 변수들 선언하고 속성(attribute)라함
    self.test = 'study'        #self 관념적으로 self를 선언하고 객체를 지칭
    pass
def my_func(self): # 클래스 함수 Method라 함
    pass

'''

다양한 Magic Method에 대해 알게 되었고 특정 모듈을 만들 때 활용시 좋을 것 같다

2) Class의 private

C와 다르게 python은 별도의 private나 static이 없고 모두 static이다.
하지만 private를 사용 시 해당 클래스내의 변수명이 자동으로 바뀜

class Test(object):
	def init(self):
		self.__test = 'study'

a = Test()
print(a.__test) #Attribute Error 발생
print(a._Test__test) #정상출력

 

3) if name == 'main': 를 왜 사용하는가

그냥 사용하던 코드였는데 정확한 사유를 알게 됨
python은 객체 지향으로 import시 코드를 모두 실행을 하기에 기존 사용하던 .py를 위(if name) 의 선언을 하지 않는다면 Main 코드가 실행이 되기에 저 것을 선언 후에 .py를 사용시 다른 곳에서 해당 파일의 특정 function을 사용해도 작동하지 않는다.

4) queue, stack

list()와 .append, .insert로 모두 구현이 가능하지만 시간 복잡도가 다름 (queue : O(n), stack : O(1))

이유 list의 맨 앞을 수정할 시 뒤의 element들의 주소를 모두 수정해야 하기에 시간복잡도가 높다

내장 모듈 collections deque를 사용하면 쉽게 queue 구현 및 속도 빠르다

'Kaist 머신러닝 엔지니어 부트캠프 > Study' 카테고리의 다른 글

Logistic Regression  (0) 2022.05.18
Linear Regression  (0) 2022.05.18
Numpy 관련  (0) 2022.05.12
딥러닝 최신 동향  (0) 2022.05.09
딥러닝 흐름  (0) 2022.05.09