JAVA 개발자의 PYTHON 도전기

이 포스트는 개인적으로 공부한 내용을 정리한 글입니다.
자세한 내용은 아래 참고자료를 봐주시면 감사하겠습니다.

기본 문법

변수

변수 이름 규칙

  1. 영문과 숫자 사용 가능
  2. 대소문자 구분
  3. 숫자로 시작하면 안됨 ex) 1variable = 10
  4. _로 시작 가능
  5. 특수문자 사용 불가능 ex) +, -, *, /, $, @, &, % 등
  6. 예약어사용 불가 ex) if, for, in, while, and, or 등
>>> 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)

변수에 변수를 할당하면 변수의 참조주소를 할당하게됩니다.

참고자료 (파이썬 코딩 도장 - Unit 6. 변수 사용하기)

profile
백엔드 프로그래머

0개의 댓글