본문 바로가기

python

[Python] 객체 타입의 종류(int, float, bool, str)

객체의 기본 type

C언어와 C++ 과는 달리 파이썬의 변수는 type 을 별도로 선언하지 않는다. 그럼 타입을 선언하지 않고 변수를 선언해도 괜찮을까? 답은 Yes 이다. 똑똑한 파이썬 언어는 알아서 변수 type 을 지정해 준다. 그럼 내가 선언한 변수 type 은 어떻게 알 수 있을까? 대화형 커맨드를 통해 알아보자.

 

위 처럼 a = 1, b = 1.2, c = True, d = "Hello" 라고 변수 타입을 따로 지정해 주지 않고 내가 넣고 싶은 값 아무것이나 대입하였다. 그리고 변수의 타입을 알아보기 위해 type 명령어를 사용하여 type 을 확인해보니 자동으로 type 이 지정된 것을 알 수 있다.

위처럼 굳이 type 명령어로 확인하지 않더라도 spyder 툴에서는 Variable exploer 를 통해 한눈에 변수 현황을 파악할 수 있다.

 

선언된 변수를 삭제하고 싶으면 우클릭 -> Remove 로 변수를 삭제할 수도 있다.

 

다른 객체타입 끼리의 연산

여기서 궁금증 하나! 다른 변수타입끼리(int 와 float) 연산을 하면 어떻게 될까? 궁금하면 콘솔창을 통해 직접 해보면 된다.

결과는 예상했던대로 float 이다. C언어에서도 이와 같이 upcasting(표현하는 타입이 범위가 큰 타입으로 바뀌게 되는 경우 쓰는 용어) 이 일어나게 된다. 이렇게 되는 이유는 생각해보면 매우 상식적이다. 1+1.2 를 하게 되면 결과는 float 형으로 밖에 표현이 안되기 때문이다. 만약에 int 가 된다고 한다면 0.2 는 사라지게 되어 기대하지 않는 결과는 낳게 된다.

이런 연산결과를 아래와 같이 간단한 표로 나타낼 수 있다. (참고로 승수는 ** 를 이용한다. ex) 2^3 2**3) 

첫번째 type 연산 두번째 type 결과 type
int +,-,*,**,% int int
int / int float
int +,-,*,**,%,/ float float
float +,-,*,**,%,/ float float

 

객체 타입의 강제 변환(casting)

한편, 위에서 upcasting 이란 단어를 사용하였는데, 파이썬에서는 데이터 타입을 casting 할 수 있다.

위에서 3.2 를 int 로 강제 형변환 하게되면 0.2 가 잘리는 일이 발생하게 된다. 이는 표현 범위를 더 작은 타입으로 강제 변환하게 된 것으로 downcasting 이라고도 부른다. 이 외에도 str(111) 은 111 을 문자열 '111' 로 변환시켜준다. 또 bool 타입인 True 나 False 도 int 형 True(1) False(0) 으로 변환시켜줄 수도 있다.