Soohyun’s Machine-learning

Python overview 본문

Lectures/Data structure and Analysis

Python overview

Alex_Rose 2017. 11. 26. 17:18





__init__ : instantiation 과정에서 


instance 생성시 __init__실행, 사라질때 __del__ 실행



world = HelloWorld()      <- instance를 storage 하는 variable 'world'를 만들어라!

                                  <-  뒤의 HelloWorld() 는 instance's template




world.performAverage (self, val1,val2) <- val1, val2는 input parameter  , self는 world. <- 이걸 받음. 









Noun (명사) 위주로 변수 이름을 잡아주면 좋다. 


CLASS convention : class MyFirstClass


VARIABLE convention : numberOfStudents = 100

ㄴ acceptable, but not recommended in Python, 파이썬에서는 변수형을 declare하지 않으므로 다른 언어에서처럼 intCount = 0 같은건 추천하지 않음


METHOD convention : def performAverage(self,val1,val2)













# homework 제출시에는 코드에 주석을 잘 달도록 한다. 원래 회사에서도 그렇게 해야 한다. 



''' 

'''   : block comments 1


"""

"""  : block comments 2


#    : 한 줄짜리 comment








Python은 data type이 나중에 assign 된다. 



numOfStudents     =     10 

    ㄴ 여기에 어떤 initial value가 없어서, 여기까지는 이 value의 data type이 없다. 

   그러다 ㄴ 10이 =10으로 들어가면서 numOfStudents의 data type이 integer로 된다. 


   10은 signed integer


   만약 = 0.1 로 해주면 float data type이 됨. long integer로 저장하려면 10L 이런식으로 뒤에 L을 붙여줘야 한다. 




collection data types = collection variable, collection information 이라고도 한다. list, dictionary, tuples 를 말한다. 











\ 는 줄바꿈 기호



복소수 선언은 complex() 를 통해서 선언할 수도, 4+3j 이런식으로 선언할 수도 있다. 


real = 실수부

imag = imagery part , 허수부 








%f : float



type casting : 변수형을 바꾼다 


e.g.   var10 = 10   (integer type)

  str(var10)     (string type)



swapping statement : 교환 




== is the equivalence of values    (equivalence check)

!= is the in equivalence of values  (equivalence check)







strTest[0] 은 H


String variable은 linear collection 이다.


문자열 사이에 , (comma)가 있으면 한 칸 띄고 print 되게 됨 


negative index가 가능하다. 즉, strTest[-2]가 가능하다.









index 의 first element 는 0부터 시작한다. 


strTest[1:9:2]       x:y:z -> from x to y   with z steps


strTest[1:len(strTest):2]   


strTest[1 : : 2]    == strTest[1 : 3]


strTest[5 : : -1]    5부터 시작해서 끝까지 -1씩 (negative step) index가 5,4,3,2,1,0 이런식으로 된다. 










element 들을 모아놓은 목록


lstTest = [1,2,3,4]                        List is another type of sequence variables


range(x,y,z) == x,y,z                         x to y    with z steps                        1, 4, 7, 10, 13, 16, 19      <- 20까지니까



lstTest.reverse()                'hey',19,16,13,10,7,4


lstTest.remove(4)              'hey',19,16,13,10,7                            element  4를 없애라



'hey'도 숫자화 (ASCII code를 이용해서)  할 수 있어서 lstTest.sort() 가 가능하다. 









parentheses   ( ) 소괄호 











collection variable type이지만 linear 하지 않다. not sequential 임


key, value pair로 구성된다.










===================== 여기까지의 statement 들은 control 을 하기 위한 statement 





return multiple variables 시에는 keep them in order!!! 


anyway you don't have types in Python     <- 파이썬에는 형 선언이 없다. 


one line function is called lambda function         lambdaAdd = lambda numParam1, numParam2 : numParam1 + numParam2











x 하나만 바꾸었는데, y와 z가 바뀌었다. 


y 리스트와 z 리스트에는 x 를 가르치는 화살표만 들어 있다.


때문에 reference 



primitive data type = int, str, ... etc


primitive data type 이 아닌 list, dict, tuple 등은 reference로 저장이 된다. 



value를 비교하는 것과 reference를 비교하는 것은 다르다. 


== : checks the equivalence of two referenced values


is : checks the equivalence of two referenced objects' IDs











class                                        instance

            === instantiation ===>

설계도                                      Home



def  <- function definition



homeAtDaejeon is homeAtSeoul                    <- reference 비교를 해보면..  return으로 False가 나온다. 다른 instance가 만들어졌기 때문이다. 


homeAtSeoul.openDoor()                              <- .openDoor() 로 function call


homeAtDaejeon.paintRoof('blue')                    <- self.colorRoof = color 로 들어가서 homeAtDaejeon의 colorRoof 는 blue가 된다. 

                                                                   물론 homeAtSeoul의 colorRoof는 여전히 red 이다. 








class의 중요한 메소드 : Constructor, Destructor



class MyHome은 2개의 variable과 6개의 member function이 존재한다.



__init__(self, ...) 이런식으로 특징지어져 있는 member function을 constructor 라고 부른다. (귀도 반 로섬이 convention으로 정해놓은 것)

하나의 instance를 만드는 시점에.. Called when instantiated

여기에 (self, strAddress)가 있으므로 MyHome class를 쓸 때 strAddress 부분은 반드시 작성해야 한다.



constructor의 self는 존재하지 않는다. self는 나중에 instantiation된 object로서의 self를 가리킨다. 




del homeAtDaejeon 을 하게 되면 MyHome을 통해서 만들어진 homeAtDaejeon이라는 object가 없어지게 된다. 



__del__(self)     <- 얘는 뒤에 self뿐임. 받는게 없다.   Destructor 









module로 할 때, 대부분의 경우 1 file에는 1 개의 class를 넣기를 추천한다. 


from     time     import     ctime

     ------                  -------

            ㄴ Package            ㄴ 활용



class : reserved word  


member variable : class 에 속한 variable..

member functions : def paintRoof , def openDoor... 



def __init__ (self, strAddress)  : constructor

def __del__(self)  : destructor






Built on KAIST Daejeon                                   <- 이거랑

Built on Wed Aug 24 15:05:57 2011                   <- 이렇게 두 개는 constructor 에 의해서 나오는 메시지

Roof color is red, and door is closed                 <- print 문으로 나옴

Destroyed at Wed Aug 14 15:05:57 2011            <- destructor에 의해서 나오는 메세지






__init__.py    :   특정 directory가 python package 라는 것을 의미하는 파일


이외의 파일들은 이 directory속의 python file 들이다. 



from package import module







lstLine = []          <- member variable 또는 attribute 라고 한다. 



































Comments