Python 기초

변수와 상수

변수가 저장하는 것

파이썬에서 변수는 어떤 데이터든지 저장할 수 있습니다. 두 종류의 수를 저장할 수 있는데 하나는 정수(integer)이고 다른 하나는 실수(floating-point)입니다.

파이썬에서 정수는 int, 실수는 float라고 부르며 이를 데이터의 종류인 자료형(data type)이라고 합니다.

또한 변수는 "RedVelvet Seulgi zzangzzanggirl" 과 같은 문자열도 저장이 가능합니다.

 

파이썬에서는 변수에 어떤 자료형의 값이든지 저장할 수 있는데 자료형은 값과 연관되고 변수와는 연관되지 않습니다.

value = 3
print(value)

value = 3.14
print(value)

value = "hello"
print(value)

 

<실행 결과>

3
3.14
hello

 

동일한 변수에 정수값, 실수값, 문자열을 저장할 수 있지만 이렇게 하나의 변수에 여러 가지 종류의 값을 저장하는 것은 바람하지 않습니다.

만약 파이썬이 계산하는 도중에 예상치 못한 값이 변수에 저장되어 있다면 오류가 발생할 수 있으므로 변수에는 한 종류의 값만을 저장하는 것이 바람직합니다.

 

NOTE

전공자를 위한 부연 설명입니다. 프로그래밍을 처음 배우시는 분이라면 아래의 내용이 이해가지 않으셔도 됩니다.

파이썬이 이렇게 어떤 자료형의 데이터든지 저장할 수 있는 것은 파이썬에서 모든 것이 객체(object)로 되어 있기 때문입니다.

변수에 저장되는 것은 실제로 객체의 주소이므로 객체이기만 하면 뭐든지 변수로 가리킬 수 있습니다.

 

위 그림에서 코드가 실행되면 메모리 영역에서는 변수 X, Y, Z가 만들어지고 객체 3과 5가 만들어집니다.

여기서 X, Y는 동일하게 3이라는 값을 가진 객체를 가리키게 되고 Z는 5라는 값을 가진 객체를 가리키게 됩니다.

만약 Y에 4를 넣으려고 한다면, 더이상 객체 3을 가리키는게 아니라 새로운 객체 4를 가리키게 됩니다.

출처: http://blog.eairship.kr/273 [누구나가 다 이해할 수 있는 프로그래밍 첫걸음]

 

변수의 이름

변수의 이름을 지을 때는 의미 없는 이름을 사용하는 것보다 의미 있는 이름을 사용하는 것이 좋습니다.

좋은 변수 이름은 전체 프로그램을 읽기 쉽게 만들지만 즉흥적으로 지은 이름을 사용하게 되면 나중에 프로그램을 읽기 아주 힘들어집니다.

예를 들어 연도와 월, 일을 나타내는데 a, b, c라고 하는 것보다 year, month, date라는 변수 이름을 사용하는 것이 이해하기 쉬울 것입니다.

 

변수 이름 짓기에 대한 이미지 검색결과

사실 변수 이름 짓는 게 코딩에서 가장 어렵습니다... ㅠㅠ

 

변수의 이름은 다음과 같은 규칙을 지켜서 만들어야 합니다.

  • 소문자와 대문자는 서로 다르게 취급됩니다.
  • 변수의 이름은 영문자와 숫자, 밑줄(_)로 이루어집니다.
  • 변수에 이름 중간에 공백이 들어가면 안되며 단어를 구분하려면 밑줄(_)을 사용합니다.

 

다음과 같은 것들이 파이썬에서 유효한 변수 이름입니다.

  • seulgi
  • _redvelvet
  • redVelvetSeulgi
  • KHLUG2018

 

다음과 같은 것들은 유효하지 않는 변수 이름입니다.

  • 2018_KHLUG
    • 변수 이름은 숫자로 시작할 수 없습니다.
  • seulgi$
    • 변수에는 밑줄(_) 이외의 특수 문자가 사용될 수 없습니다.

 

만약 변수가 정의되어 있지 않은데 사용하려 하면, 즉 값이 할당되어 있지 않을 때 사용하려 하면 오류가 발생합니다.

n

print(n)

 

<실행 결과>

NameError: name 'n' is not defined

 

파이썬에는 마지막 계산의 결과가 변수 _에 자동으로 저장됩니다.

따라서 이것을 이용하면 좀 더 쉽게 파이썬으로 계산할 수 있습니다. 이 기능은 대화형 Python에서만 실행 가능합니다.

 

NOTE

개발자들은 변수의 이름을 지을 때 낙타체(Camel Case)를 많이 사용합니다. 낙타체는 변수의 첫 글자는 소문자로, 나머지 단어의 첫 글자는 대문자로 적는 방법입니다.

예를 들면, redVelvetSeulgi 처럼 첫 'r'은 소문자로, 나머지 단어들의 첫 글자는 대문자로 표기합니다.

낙타체에 대한 이미지 검색결과

 

상수

상수(constant)는 한번 값이 결정되면 절대로 변경되지 않는 변수를 의미합니다. 일반적인 언어에서는 상수를 변수와 다르게 정의하지만 파이썬에서는 그렇지 않습니다.

따라서 변수를 정의할 때 값이 변경되지 않으면 전체를 대문자로 하여 구분하는 것이 좋습니다.

TAX_RATE = 0.35
PI = 3.141592
MAX_SIZE = 100

 

그런데 왜 소스에 0.35으로 직접 적지 않고 TAX_RATE처럼 적는 것이 좋을까요?

첫 번째 이유는 0.35보다는 TAX_RATE으로 적는 것이 더 쉽게 읽혀지는 것이고 두 번째 이유는 나중에 상수를 변경해야 할 때 한 곳만 고치면 되기 때문입니다.

 

상수는 아래의 코드처럼 사용합니다.

TAX_RATE = 0.35
tax = 1000 * TAX_RATE
income = 1000 - tax

print("현재의 세율은", TAX_RATE * 100, "퍼센트이고 수입은", income, "입니다.")

 

<실행 결과>

현재의 세율은 35.0 퍼센트이고 수입은 650.0 입니다.

 

주석

주석(comment)은 소스 코드에 붙이는 설명글입니다. 주석은 프로그램이 하는 일을 설명하며 프로그램의 실행 결과에 영향을 끼치지 않습니다.

주석은 반드시 있어야 되는 부분은 아니며 컴파일러는 주석을 무시하여 기계어 코드를 생성하지 않습니다.

 

파이썬에서는 줄의 맨 처음에 #을 적으면 주석이 됩니다. 주석의 사용법은 아래 코드를 참고하시기 바랍니다.

# 사각형의 가로 길이
width = 10

# 사각형의 세로 길이
height = 20

# 사각형의 면적 계산
area = width * height

# 면적 출력
print("사각형의 면적은", area, "입니다.")

 

<실행 결과>

사각형의 면적은 200 입니다.

 

주석이 컴파일러에게 무시되는 것이라면 없어도 되는 것일까요?

아닙니다. 주석은 프로그램을 재검토하여 수정하려고 할 때에 많은 시간이 흐르면 만든 사람조차 내용을 잘 기억할 수 없을 수 있습니다.

또한 다른 사람이 프로그램을 보았을 때 주석이 있다면 훨씬 쉽게 프로그램의 내용을 알 수 있을 것이기 때문에 주석은 반드시 추가하는 게 좋습니다.

 

주석의 용도가 하나 더 있는데 코드 중에서 실행하고 싶지 않은 문장이 있다면 아래와 같이 # 기호를 넣어 주석으로 처리하는 방법입니다.

# 사각형의 가로 길이
width = 10

# 사각형의 세로 길이
height = 20

# 사각형의 면적 계산
area = width * height

# 면적 출력
# print("커지는 헐빗빗빗 빨라지는데")
print("사각형의 면적은", area, "입니다.")

 

<실행 결과>

사각형의 면적은 200 입니다.

 

첫 번째 print문 앞에 # 기호를 붙임으로써 print 함수가 실행되지 않도록 코드를 작성하였습니다.