[Python] 2. 변수

Wonder_Land🛕·2022년 6월 9일
0

[Python]

목록 보기
2/12
post-thumbnail
  1. 변수
  2. 변수와 자료형
  3. 변수의 생성 및 제거
  4. Q&A
  5. 마치며

1. 변수(Variable)

  • 변수(Variable) : 값을 저장할 때 사용하는 식별자

1) 변수의 자료형

  • 변수의 자료형은 type()함수로 알 수 있습니다.
    (이는 Python이 저장된 값의 자료형에 의해 변수의 자료형이 결정되는 동적 타입 언어이기 때문입니다.)

  • 변경 가능한 변수에 다른 자료형의 값이 저장되면 자료형을 변경할 수 있습니다.

>>> a = 3
>>> type(a)
<class 'int'>

>>> a = "Wonder_Land"
>>> type(a)
<class 'str'>

예시에서 알 수 있듯이 처음에 변수 ainteger였지만, 나중에는 저장되는 값에 의해 string으로 변경되었습니다.

하지만! 코드를 작성할 시에 변수의 자료형이 계속해서 변한다면 나중에 혼란이 생길 수 있기 때문에, 가급적이면 하나의 변수에는 하나의 자료형만 사용하도록 권장합니다😊


2) 변수명

변수의 이름을 정의할 때는 몇 가지의 규칙이 있습니다.

(1) 문자, 숫자, _(Underbar)로 조합

(Python3부터는 유니코드를 지원하기 때문에 한글도 사용가능합니다.)

abc_123_d4 = 3

(2) 숫자로 시작할 수는 없습니다

>>> 123abc = 3
SyntaxError: invalid decimal literal

(3) 영어는 대소문자를 구별합니다.

(4) Python에서 제공하는 예약어와 동일한 이름은 사용할 수 없습니다.

  • 예약어(Keyword) : 특정 기능을 수행하기 위해 사전에 정의된 단어
    ex) True, False, None, if, while, and, break, class, ⋯
>>> if = 3
SyntaxError: invalid syntax

3) 변수와 ¹객체

  • 변수는 객체에 대한 식별자 역할을 합니다.
>>> var1 = 10
>>> var2 = 10
>>> var1 is var2
True

var1var210이라는 동일한 객체를 참조하고 있습니다.
따라서 ²is로 확인해보면 동일한 객체라고 나오네요 :)


2. 변수와 자료형

변수에는 여러가지 자료형이 있습니다.
자료형에 대한 자세한 내용은 추후에 살펴보고 이번에는 간단히만 보겠습니다.

1) 튜플(Tuple)

  • 튜플(Tuple)
    : () 안에 서로 다른 자료형의 값을 ,로 구분해, 하나 이상 저장할 수 있는 ³컬렉션 자료형
  • Tuple에서 각 요소는 0부터 시작하는 index로 접근 가능합니다.

  • Tuple에서 한 번 저장된 요소는 변경할 수 없습니다.

>>> student = ("Wonder", 20)
>>> student = "Wonder", 20	#(1) initialize 시에 `()` 생략 가능

>>> student[0]	#(2) index를 이용한 접근
'Wonder' 

>>> studnet[2]	#(3) index의 범위 초과
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    student[2]
IndexError: tuple index out of range

>>> student[1] = 30	#(4) 요소 변경 시도
Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    student[1] = 30
TypeError: 'tuple' object does not support item assignment

>>> student = ("Land", 21)	#(5) 새로운 tuple 객체 참조

위의 예시를 통해 살펴볼까요

(1) Tuple을 초기화할 때는 ()를 추가해도 되고, 생략해도 됩니다.

(2) 각 요소는 index를 이용해서 접근 가능하죠. (이 때, 시작은 0부터 입니다.)

(3) 하지만 index로 접근할 때는 주의할 점이 있는데요, 주어진 index의 범위를 넘어가게 되면 Index Error를 반환하니 주의해 주세요!

(4) 이미 정의된 Tuple의 요소는 변경 불가능 합니다.
(위의 예시에서도, tuple은 요소에 대한 assignment를 지원하지 않는다고 하네요)

(5) student는 변수이므로 새로운 tuple 객체를 참조할 수 있습니다.


2) 리스트(List)

  • 리스트(List)
    : [] 안에 서로 다른 자료형의 값을 ,로 구분해, 하나 이상 저장할 수 있는 ³컬렉션 자료형
  • List에서 각 요소는 0부터 시작하는 index로 접근 가능합니다.

  • List에서는 한 번 저장된 요소는 변경할 수 있습니다.
    (Tuple에서는 불가능했죠?🤔)

>>> student = ["Wonder", 20]

>>> student[0]	#(1) index를 이용한 접근
'Wonder' 

>>> studnet[2]	#(2) index의 범위 초과
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    student[2]
IndexError: list index out of range

>>> student[1] = 21	#(3) 요소 변경
>>> student
['Wonder', 21]

>>> student = ["Land", 21]	#(4) 새로운 List 객체 참조

위의 예시를 통해 살펴볼까요

(1) 각 요소는 index를 이용해서 접근 가능하죠. (이 때, 시작은 0부터 입니다.)

(2) 하지만 index로 접근할 때는 주의할 점이 있는데요, 주어진 index의 범위를 넘어가게 되면 Index Error를 반환하니 주의해 주세요!

(3) List에서는 이미 정의된 요소는 변경 가능 합니다.
(tuple과는 다르죠?)

(5) student는 변수이므로 새로운 List 객체를 참조할 수 있습니다.


3) 집합(Set)

  • 집합(Set)
    : {} 안에 서로 다른 자료형의 값을 ,로 구분해, 하나 이상 저장할 수 있는 ³컬렉션 자료형
  • Set에서는 순서의 개념이 존재하지 않아, index를 사용할 수 없습니다.

  • 요소의 중복을 허용하지 않습니다.

>>> student = {"A", "B", "C", "A"}	#(1) 요소의 중복 허용 X
>>> student
{'B', 'C', 'A'}

>>> student[0]	#(2) index 사용 X
Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    student[0]
TypeError: 'set' object is not subscriptable

>>> student |= {"D", "E"}	#(3) 합집합 연산자 `|`
>>> student
{'E', 'C', 'A', 'B', 'D'}

>>> student = {"F", 21}	#(4) 새로운 Set 객체 참조

위의 예시를 통해 살펴볼까요

(1) 각 요소는 중복된 값을 허용하지 않습니다.

(2) Error문에서 알 수 있듯이, Set은 순서의 개념이 없어 index를 사용할 수 없습니다.

(3) Set에서는 여러가지 연산자를 제공하는데, 그 중 하나인 합집합 연산자 |를 사용할 수 있습니다.

(5) student는 변수이므로 새로운 Set 객체를 참조할 수 있습니다.


4) 딕셔너리(Dictionary)

  • 딕셔너리(Dictionary)
    : {} 안에 key:value 형식을 가진 유일한 데이터를 ,로 구분해, 하나 이상 저장할 수 있는 ³컬렉션 자료형
  • key를 이용해 값을 읽을 수 있습니다.

  • 항목을 추가할 때, 동일한 key가 있다면 저장된 요소를 변경하고, 동일한 key가 없다면 새로운 요소를 추가합니다.

>>> student = {1:"Wonder", 2:"Land"}
>>> student[1]
'Wonder'

>>> student[3]	#(1) key를 이용한 접근
Traceback (most recent call last):
  File "<pyshell#57>", line 1, in <module>
    student[3]
KeyError: 3

>>> student[2] = "Alice"  #(2) 동일한 key에 대한 접근
student
{1: 'Wonder', 2: 'Alice'}

>>> student[3] = "Rabbit"	#(3) 새로운 요소 추가
student
{1: 'Wonder', 2: 'Alice', 3: 'Rabbit'}

위의 예시를 통해 살펴볼까요

(1) Dictionary에서는 key를 이용해 요소에 접근합니다.
만약 해당 key가 없다면, Key Error를 반환합니다.

(2) 동일한 key를 가지고 있다면, 해당 요소의 value를 변경합니다.

(3) 만약 해당 key가 없다면, 새로운 항목을 추가합니다.


5) None 객체

  • None 객체를 이용하여 Null 상태를 표현할 수 있습니다.
  • 최초로 변수 선언 시, 초기화를 하지 않으면 Error가 발생합니다😢
    따라서, 초기화값을 제공하지 않을 때에는 None 객체를 사용할 수 있습니다.
>>> student
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    student
NameError: name 'student' is not defined

>>> student = None
>>> student is None
True
  • None 객체를 객체를 확인 할 때는, ==보다는 is 사용을 권고합니다.

3. 변수의 생성 및 제거

1) 변수를 생성하고 초기화하는 다양한 방법

  • 변수는 기본적으로 한 번에 하나씩 생성되지만, 두 개 이상의 변수를 한 번에 생성할 수 도 있습니다.

(1) Tuple 사용

>>> (x, y) = (10, 20)
>>> (x, y) = 10, 20
>>> x, y = (10, 20)
>>> x, y = 10, 20

(2) List 사용

>>> [x, y] = [10, 20]
>>> [x, y] = 10, 20
>>> x, y = [10, 20]

위의 방법들로 인해, 쉽게 변수의 값을 교체할 수 있습니다.

>>> (x, y) = (10, 20)
>>> x, y = y, x	#값 교체
>>> x
20
>>> y
10

2) 변수의 제거

  • Python은 Garbage Collector를 통해 객체가 사용한 메모리 공간을 자동으로 관리합니다.

  • 따라서, 개발자가 메모리 관리를 직접 할 필요가 없는 거죠

  • 그럼에도 불구하고 변수를 제거하고자 한다면 del()함수를 사용하면 됩니다.

>>> x = 10
>>> del(x)
>>> x
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    x
NameError: name 'x' is not defined

4. Q&A

1) 객체(Object)

해당 내용은 https://wikidocs.net/book/2067 해당 사이트를 참고하여 만들어졌습니다.

객체(Object) : 어떠한 속성값과 행동을 가지고 있는 데이터입니다.
ex) 값, 컨테이너, 함수, 클래스 등등

  • Python에서는 단순하게 하나의 문자를 생성할 때 문자를 표현하는것으로 끝내는게 아니라, 해당 문자 자체를 Object로 만들고 다양한 속성과 행동을 넣어뒀습니다.

  • 이러한 Ojbect들이 가진 속성중에 상태들은 value, 또는 attribute라고 부릅니다. 또 Object가 가진 행동들은 method라고 부릅니다.

  • 참고로 Python에서는 모든 값을 Object로 나타냅니다.

자세한 내용은 해당 url을 참고해주세요! 정리가 아주 잘 되어 있네요😉
1. 객체란?
2. 객체의 타입


2) is 연산자

  • is 연산자는 동일한 Object를 참조하는지 확인
  • ==연산자는 동일한 Value를 참조하는지 확인
>>> a = [1, 2, 3]
>>> b = a
>>> c = [1, 2, 3]

>>> a is b
True
>>> a is c
False

>>> a == b
True
>>> a == c
True


3) 컬렉션 자료형

  • 컬렉션 자료형 : 여러가지 요소를 하나로 묶어 사용하는 자료형

(Python에서 정의하는 Container와 Collection이 정확하게 구분이 안된다. 구글링을 해도 정확한 의미가 없다....😢)


5. 마치며

사실 변수에 대한 내용을 공부하면 끝도 없죠...
메모리 할당, 각 자료형에 대한 특성, 컨테이너 등등 너무나도 많은 내용을 알아야하는데 지금은 그런 내용 보다는 기본적인 특성에 대해서만 작성했습니다.
아마 추후에 더 자세한 내용을 다루지 않을까 생각합니다🤔
마지막 내용인 collection과 container의 의미 차이가 모호해서 구글링을 해서 찾아봐도 마땅한 내용이 없네요...😢
python 공식 설명서나 다른 글에서도 자세히 나와있지 않아서 원하는 답을 못 얻었어요😂
혹시나 알고 계신 분이 있다면 가르쳐주세요!

[Reference] : 위 글은 다음 내용을 참고, 인용하여 만들어졌습니다.

profile
아무것도 모르는 컴공 학생의 Wonder_Land

0개의 댓글