6.1 변수 만들기

Unit 6. 변수와 입력 사용하기

지금까지 파이썬 셸에서 숫자와 연산자를 사용하여 직접 계산을 해보았습니다. 그런데 계산 결과를 바로 출력할 수는 있었지만 결과를 계속 가지고 있을 수는 없었습니다. 이때는 변수를 사용해서 결과를 저장해야 합니다.

이번 유닛에서는 변수(variable)를 만들어 결과를 저장하는 방법을 알아보겠습니다.

6.1 변수 만들기

파이썬에서는 다음 그림과 같은 형식으로 코드를 입력하여 변수를 만듭니다.

그림 6-1 변수 만들기

x = 10이라고 입력하면 10이 들어있는 변수 x가 만들어집니다. 즉, 변수이름 = 값 형식이죠. 이렇게 하면 변수가 생성되는 동시에 값이 할당(저장)됩니다.

변수 이름은 원하는 대로 지으면 되지만 다음과 같은 규칙을 지켜야 합니다.

  • 영문 문자와 숫자를 사용할 수 있습니다.
  • 대소문자를 구분합니다.
  • 문자부터 시작해야 하며 숫자부터 시작하면 안 됩니다.
  • _(밑줄 문자)로 시작할 수 있습니다.
  • 특수 문자(+, -, *, /, $, @, &, % 등)는 사용할 수 없습니다.
  • 파이썬의 키워드(if, for, while, and, or 등)는 사용할 수 없습니다.

그럼 파이썬 셸에서 변수를 만들어보겠습니다. >>>에 다음 코드를 입력하세요.

>>> x = 10
>>> x
10

변수 x를 만들면서 10을 할당했습니다. 파이썬 셸에서는 변수를 입력한 뒤 엔터 키를 누르면 변수에 저장된 값이 출력됩니다.

변수에는 숫자뿐만 아니라 문자열도 넣을 수 있습니다.

>>> y = 'Hello, world!'
>>> y
'Hello, world!

' '(작은따옴표)로 묶은 문자열 Hello, world!를 변수 y에 할당했습니다.

6.1.1 변수의 자료형 알아내기

파이썬에서는 변수의 자료형이 중요합니다. 앞에서 type을 사용해서 10, 5.3과 같은 숫자의 자료형을 알아보았습니다. 마찬가지로 type에 변수를 넣으면 변수(객체)의 자료형이 나옵니다.

  • type(변수)
>>> type(x)
<class 'int'>
>>> type(y)
<class 'str'>

x에는 정수 10이 들어있으므로 int, y에는 문자열 Hello, world!가 들어있으므로 str이라고 나옵니다(int는 정수(integer), str은 문자열(string)에서 따왔습니다). 즉, 변수의 자료형은 변수에 들어가는 값에 따라 달라집니다.

파이썬에서 변수를 사용하다 보면 자료형이 맞지 않아 발생하는 문제를 자주 접하게 됩니다. 이런 경우에는 type으로 자료형 뭔지 알아보면 문제를 쉽게 해결할 수 있습니다.

참고 | 기호는 같다는 뜻 아닌가요?

수학에서는 =(등호) 기호는 양 변이 같다는 뜻이죠? 하지만 프로그래밍 언어에서 =는 변수에 값을 할당(assignment)한다는 의미입니다. 수학의 등호와 같은 역할을 하는 연산자는 ==입니다.

6.1.2 변수 여러 개를 한 번에 만들기

지금까지 변수를 하나씩 만들었습니다. 파이썬에서는 변수 여러 개를 한 번에 만들 수도 있습니다.

>>> x, y, z = 10, 20, 30
>>> x
10
>>> y
20
>>> z
30

변수이름1, 변수이름2, 변수이름3 = 값1, 값2, 값3 형식으로 변수를 ,(콤마)로 구분한 뒤 각 변수에 할당될 값을 지정해주면 됩니다. 변수와 값의 개수는 동일하게 맞춰주어야 하며 나열된 순서대로 값이 할당됩니다. 만약 변수와 값의 개수가 맞지 않으면 이렇게 에러가 발생합니다.

>>> x, y, z = 10, 20
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    x, y, z = 10, 20
ValueError: not enough values to unpack (expected 3, got 2) 

변수 여러 개를 만들 때 값이 모두 같아도 된다면 다음과 같은 방식도 사용할 수 있습니다.

>>> x = y = z = 10
>>> x
10
>>> y
10
>>> z
10
>>> 

변수 3개를 만들면서 모두 같은 값을 할당했습니다. 이렇게 변수1 = 변수2 = 변수3 = 값 형식으로 변수 여러 개를 =로 연결하고 마지막에 값을 할당해주면 같은 값을 가진 변수 3개가 만들어집니다.

그럼 조금 응용해서 두 변수의 값을 바꾸려면 어떻게 해야 할까요? 다음과 같이 변수를 할당할 때 서로 자리를 바꿔주면 됩니다.

>>> x, y = 10, 20
>>> x, y = y, x
>>> x
20
>>> y
10

x는 20, y는 10이 나왔습니다. 이처럼 변수1, 변수2 = 변수2, 변수1 형식으로 두 변수의 값을 바꿀 수 있습니다.

참고 | 변수 삭제하기

변수 삭제는 del을 사용합니다.

del 변수

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

변수 x를 삭제하여 변수가 없어졌으므로 x가 정의되지 않았다는 메시지와 함께 NameError가 발생합니다. 지금은 변수 삭제가 큰 의미가 없지만 나중에 리스트를 사용할 때 del이 유용하게 쓰입니다.

참고 | 빈 변수 만들기

변수를 만들 때 x = 10과 같이 할당할 값을 지정해주었습니다. 그럼 값이 들어있지 않는 변수는 만들 수 없을까요? 값이 들어있지 않은 빈 변수를 만들때는 None을 할당해주면 됩니다.

>>> x = None
>>> print(x)
None
>>> x
>>> (아무것도 출력되지 않음)

print로 변수 x의 값을 출력해보면 None이 나옵니다. 파이썬에서 None은 아무것도 없는 상태를 나타내는 자료형입니다. 보통 다른 언어에서는 널(null)이라고 표현합니다.