1. 변수(variable) 정의와 변수 선언
변수란, '변할 수 있는것'으로 어떠한 값을 담는 '상자'라고 생각하면 된다.
a = 10
예를들어, a = 10이라고 하는 것은 '10을 a라고 하는 상자(변수)에 담아줘! '라는 의미이다.
그리고 이것을 '변수를 선언한다'라고 표현한다.
( * 우리가 수학 시간에 배운 등호'='는 프로그래밍에서는 '=='로 표시한다. )
우리가 변수에 넣은 값이 잘 들어갔는지 확인해보고 싶다면, print() 함수를 이용하여 값을 출력해보면 된다. print(a)를 출력했을 때 10이 출력되는 것을 알 수 있다.
print(a)
그렇다면 여러개의 변수를 한 번에 선언하고 싶을때는 어떻게 해야 할까?
a = 10
a,b = (10, 20)
[a,b] = [10, 20]
a = b = 10
a = None
- a = 10
- a , b = (10, 20) :튜플을 이용하여 각각 값을 할당
- [a, b] = [10, 20] :리스트를 이용하여 각각 값을 할당
- a = b = 10 : a와 b에 똑같은 값을 할당하고 싶을 때 사용
- a = None : 비어있는 변수를 만들고 싶을 때 사용
2. 변수 이름
변수를 선언할 때 변수의 이름은 마음대로 지어도 된다. 하지만 몇 가지 지켜야 할 규칙이 있다,
- _ 혹은 영문자로 시작해야 한다.
- 숫자로 시작할 수 없다
- 특수문자(+,-,%,^,%등)은 사용할 수 없다.
- 변수 이름에 공백이 있으면 안 된다 (보통 _로 이어줌)
- 파이썬의 예약어(for, while, if 등)는 사용할 수 없다.
3. 변수 교환 (swap)
이번에는 각각의 변수를 선언하고 두 변수에 들어있는 값을 서로 바꿔보겠다.
a = 10
b = 100
그전에 기본적으로 변수에 대해 알고 넘어가야 할 것이 있다. 우리가 변수를 선언하면 램에 있는 메모리 공간에 데이터를 저장할 수 있는 공간이 각각 할당된다. a = 10을 위에서는 쉽게 설명을 하기 위해 10을 a에 담는다고 했지만 조금 더 정확히 말하자면 '10'이 있는 주소를 'a'라는 상자(변수)에 넣는 것이다. 같은 원리로 b =100 은 100이 있는 주소를 b라는 변수에 넣는다고 생각하면 된다. 처음 접했을 때 조금 어려운 개념일 수도 있지만, 예를 들어 box = '나'라고 선언했을 때 그 box에 내가 직접 들어가는 게 아니라 내가 있는 주소가 적힌 종이를 상자에 넣는다 라고 생각하면 쉬울 것 같다.
그럼 이제 a와 b의 값을 바꿔보자!
다른 프로그래밍 언어에서는 이 경우 a, b를 제외한 또 다른 빈 상자 (변수)를 만들어 두 변수의 값을 교환해야 하지만, 파이썬의 경우 훨씬 간단한 방법으로 해결할 수 있다.
a = 10
b = 2000
먼저 변수 a와 b를 각각 10, 2000로 선언한다.
a = 10
b = 2000
a,b = b,a
a,b = b, a로 a와 b에 있는 값을 서로 바꿔주면 끝이다!
a = [10, 20, 30]
변수에 대한 기본적인 것들을 공부했으니 이번에는 조금 더 심화 내용을 알아보기로 한다. 변수 a에 [10, 20, 30]이라는 리스트 값을 넣는다. a는 그 리스트가 있는 주소를 담게 되고, 리스트의 각각의 방에는 10,20,30의 값이 들어가 있다.
* 리스트(list)에 대한 구체적인 내용은 추후에 다룰 예정이다. 지금은 그냥 어떤 하나의 서랍이 만들어졌고 각 서랍에 값이 들어갔다 정도로만 이해하면 된다.
a = [10, 20, 30]
b = a
다음으로 b = a로 변수 b에 a리스트의 주소를 넣었다. 위의 그림을 보면 알 수 있듯, a와 b가 같은 곳을 가리키고 있다. (즉, a 와 b의 주소가 같다.)
a = [10, 20, 30]
b = a
a[0] = 200
a [0] = 200 이라는 것은 a에 0번째 있는 값을 200으로 바꿔줘!라는 의미이다. 여기서부터는 리스트의 개념을 알고 있어야 쉽게 이해되는 부분이지만, 지금은 그냥 0이라는 이름의 방에 있는 값을 200으로 바꿨다고 생각하면 될 것 같다.
a = [10, 20, 30]
b = a
a[0] = 200
print(b)
마지막으로 print(b) 라는 코드를 작성하여 b에 들어가 있는 값을 출력해보면 [200, 20, 30]이 나온다. 즉 리스트의 첫 번째 값이 10에서 200으로 바뀐 것을 알 수 있다. 우리는 a의 값을 바꿨는데 왜 b의 값도 같이 바뀌었을까?여기서 아까 언급했던 '주소'를 저장한다는 개념을 이해해하는 것이 필요하다. b = a에서 a의 값이 복사되어 b에 들어간 것이 아니고 a의 '주소'를 가지고 있는 것이다. 즉 a와 b가 같은 곳을 바라보고 있기 때문에 a의 값을 바꾸면 b의 값이 같이 바뀌게 되는 것이다.
그렇다면 a의 복사본을 b에게 주고 a의 값이 변화할 때 b는 변하지 않게 하고 싶으면 어떻게 해야 할까? 이때는 슬라이싱[:]을 이용하면 된다. 방법은 다음과 같다.
첫 번째로, 아까와 같이 a = [1,2,3] 으로 하나의 리스트를 만들어 넣어준다. 이때 a리스트의 각각의 방에 1,2,3이 들어가 있는 것을 알 수 있다.
a = [1,2,3]
b = a[:]
두번째로 b = a[;] 를 이용하여 a의 값들을 각각 슬라이싱 하고 복사해서 b에 넣어준다. 아까 b = a 만 했을 때와 비교하면 다른 것을 알 수 있다.
a = [1,2,3]
b = a[:]
a[0] = 4
마지막으로a [0] =4 즉, a라는 리스트의 0번째 방에 있는 값을 4로 바꿨을 때 b에는 영향을 주지 않고 a만 바뀌는 것을 알 수 있다.
'💻프로그래밍 > python' 카테고리의 다른 글
[파이썬 독학] 3. 리스트(list) (0) | 2021.01.12 |
---|---|
[파이썬 독학] 2-1 문자열 내장함수 종류와 사용법 (0) | 2021.01.12 |
[파이썬 독학] 2. 자료형(Data type)정리 - 자료형 확인, 변환, 종류, 선언 (0) | 2021.01.11 |
[파이썬 독학] 맥(mac) 주피터 노트북(Jupyter Notebook) 단축키 정리 (0) | 2021.01.10 |
맥북에 파이썬(python) 설치하기 (아나콘다 주피터 노트북) (0) | 2021.01.09 |