Post

(python) 정수 실수 자료형

파이썬에서는 모든 것이(데이터 타입이나 함수, 프로그램까지) 객체로 구현되어 있다.

함수가 일급 객체이기 때문에 JS같이 함수형으로 프로그래밍 할 수도 있다.

파이썬에서 변수를 값으로 초기화하면 자바의 wrapper class 비슷하게 동작한다. 1) 값을 담은 객체로 생성된다. 2) 변수는 이 객체를 가리킨다. a = 3 하면 a라는 변수에 3이 담기는게 아니라 3이라는 정수형 객체가 생성되고 a가 객체 3을 가리키게 된다. 자바의 wrapper class도 값을 담은 객체가 생성되고 이를 가리키게 된다. 그러나 값을 4로 변경하고 싶을 때, 자바의 경우 객체에 담긴 값을 변경하거나 새로운 4라는 객체를 생성하는 두가지 방법을 사용할 수 있지만 파이썬은 후자만 가능하다.

1
2
3
4
>>> a = 3
>>> b = 3
>>> a is b
True

이렇게 하면 ab 모두 3이라는 객체를 가리킨다. 즉 a, b는 같은 메모리 주소를 가리킨다. 정수형 객체 3의 레퍼런스 카운터가 증가한다. 그러나 항상 이렇게 동작하는 것은 아니다. 자주 사용하는 정수(0-256)는 이런식으로 동작하지만, 그 범위를 벗어나는 정수는 정수객체가 메모리에 따로따로 생성된다.

1
2
3
4
5
6
7
>>> import sys
>>> sys.getrefcount(3)    # 3이라는 객체의 참조 횟수
30
>>> id(3)    # 객체 자체의 주소
25497896
>>> sys.getsizeof(3) # 3이라는 객체의 크기
24
AND OR

&&||가 없고 andor를 사용한다.

특이한 연산자

// 은 나누고 소수점 이하 버리는 연산. (int) 형변환과 비슷한 효과. \*\* 은 지수 @ 은 행렬곱

math 모듈에 다양한 수학 함수 및 상수 fabs, log, sin, pi, e 등이 있다. 파이썬은 자체적으로 복소수를 지원 한다. j를 붙여 허수부를 표현할 수 있다. 1j \* 1j

관련된 수학 함수는 cmath 모듈에 있다.

정수

파이썬3에서 long이 사라지는 대신 int의 크기가 유연해졌다. 64비트보다 큰 데이터도 처리할 수 있다. 그렇다고 무한대는 아니다.

실수(부동소수점수)

double이 없고 float다.

형변환

형변환은 (int)23.3가 아니라 int(23.3)와 같은 형식으로 사용한다. 텍스트 문자열을 그대로 변환하는 것도 가능하다. int('-32')

소수점이나 지수(e)를 포함하는 문자열은 float('32.3')

반대로 숫자를 문자열로 변환하는 것도 가능하다. str(85.4)

문자열이 아닌 객체를 print()로 호출할 때 내부적으로 str()을 사용하게 된다.

This post is licensed under CC BY 4.0 by the author.