이 포스트는 개인적으로 공부한 내용을 정리한 글입니다.
자세한 내용은 아래 참고자료를 봐주시면 감사하겠습니다.
>>> x = 0
>>> x
0
변수의 초기화는 위와 같습니다.
빈 변수를 만드려면 None을 할당합니다. python의 None은 자바의 null과 같다.
>>> x = None
>>> x
>>> print(x)
None
또한 파이썬의 변수는 type에 자유롭습니다.
>>> x = 10
>>> type(x)
<class 'int'>
>>> x = "string"
>>> type(x)
<class 'str'>
>>> x = 10.
>>> type(x)
<class 'float'>
자바는 타입을 지정하고, 다른 타입을 할당할수 없지만 파이썬은 가능합니다.
변수 여러 개 한번에 만들기
>>> a, b, c = 10, 20, "string"
>>> a, b, c
(10, 20, 'string')
>>> a = b = c = 10
>>> a, b, c
(10, 10, 10)
위와 같이 변수를 여러 개 한번에 만들 수 있습니다.
>>> a, b, c = 10, 20
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
>>> a, b, c = 10, 20, 30, 40
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 3)
n개의 변수를 입력하고 할당 값을 n 미만개 혹은 n을 초과하면 에러가 발생합니다.
>>> a, b = 10, 20
>>> a, b
(10, 20)
>>> a, b = b, a
>>> a, b
(20, 10)
위와 같이 변수에 변수를 할당할 수 있습니다. 자바는 값을 바꾸기 위해서 다른 변수 c가 필요한데 비해 파이썬에서는 간단하게 값을 변경할 수 있습니다.
변수 삭제는 del
을 사용합니다.
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
파이썬의 변수에 값이 저장되는 방식을 알아보겠습니다.
파이썬은 값 자체도 객체입니다. 따라서 변수에 값을 저장하지 않고 변수가 객체를 가리키는 방식입니다.
자바의 참조타입과 비슷한 느낌이 듭니다.
import sys
print(sys.getrefcount(1000)) # 2: 처음 레퍼런스 카운트는 2
x = 1000 # x에 1000을 저장
print(sys.getrefcount(1000)) # 3: 1000을 한 번 사용하여 레퍼런스 카운트 1 증가
y = 1000 # y에 1000을 저장
print(sys.getrefcount(1000)) # 4: 1000을 한 번 사용하여 레퍼런스 카운트 1 증가
print(x is y) # True: x와 y가 같은 객체를 가리키고 있으므로 True가 나옴
라고 하지만 실제로는 달랐습니다. 아마 python이 업데이트되면서 변수 참조 방식이 달라진것같습니다.
>>> x = 1000
>>> y = 1000
>>> id(x)
2071261229680
>>> id(y)
2071261229072
>>> x == y
True
>>> x is y
False
id(대상)은 변수의 메모리 주소를 리턴하는 함수입니다.
>>> list_a = []
>>> list_b = []
>>> list_a == list_b
True
>>> list_a is list_b
False
>>> list_a = list_b
>>> list_a == list_b
True
>>> list_a is list_b
True
>>> id(list_a), id(list_b)
(2071263352384, 2071263352384)
변수에 변수를 할당하면 변수의 참조주소를 할당하게됩니다.