이렇게 공부를 하다보면 고민이 되는 게, 왜 내 벨로그는 성장하지 않을까?와
이게 맞는지...
파이썬에는 long
이 없이 int형만 존재하며 임의정밀도만 지원한다.
따라서 파이썬의 숫자자료형에는 한계가 없다👍
임의정밀도는 무제한 자릿수를 제공하지만, 속도가 느리다는 단점이 있다.
논리자료형인 Ture나 False는 사실 정수값 1(True), 0(False)을 가지는 숫자다.
키와 자료형으로 구성된 복합 자료형이고 내장 자료형으로는 딕서너리(dict)가 있다.
중복을 허용하지 않는 자료형이다.
선언 방법 1. = set()
선언 방법 2. {요소들}
, 딕셔너리와 동일하게 중괄호를 사용한다.
//방법 1
a = set()
a.add(1)
a.add(1)
a.add(2)
a.add(3)
print(a) //{1,2,3}
//방법2
b = {2,3,4,5,5}
print(b) //{2, 3, 4, 5}
시퀀스에는 가변객체와 불변객체가 있다.
str_1 = "set"
str_2 = "set"
print(id(str_1))
print(id(str_2))
str_1 = "ert"
print(id(str_1))
#"set"과 "ert"는 생성되고 나서 변하지 않고, 메모리에 남아있다.
파이썬은 숫자, 문자 모두 객체다.
불변 객체는 해당 값이 메모리에 올라가고 변경되지 않는다.
불변 객체에서 중요한 것은 참조변수에 불변객체값을 바꾼다고, 객체의 값이 변경되는 것이 아니라, 새롭게 넣은 값이 새롭게 메모리에 올라가고 그 메모리의 주소값을 참조하는 것으로 바뀐다는 것이다.
즉, 같은 값을 참조하고 있는 변수 a,b가 있을 때 a의 값을 바꿔도 b에 영향이 가지 않는다. 또한 a의 값을 변경할 수는 없다. 새로운 값이 들어가는 것 뿐이다.
t1 = (1,2,3)
t2 = t1
t1 = (4,5,6)
print(t2) #(1,2,3)
가변 객체는 값이 변경될 수 있다.
같은 값을 참조하고 있는 a와 b가 있을 때, a의 값을 변경하면 b도 함께 변화한다.
(새로 할당하는 것과는 다르다.)
l1 = [1,2,3]
l2 = l1
l1[1] = 4
print(l2) #[1,4,3]
==
: 값을 비교한다.
is
: id()값을 비교한다.
a = [1,2,3]
b = list(a)
print(a is b) #False
print(a == b) #True
가변객체의 경우 값이 변하기 때문에, 새로 할당하는 것이 아니라 값을 변경했을 때는
그 객체를 참조하고 있는 참조변수가 모두 영향받는다~!