파이썬 주석과 변수

주석 (Comments)

주석은 코드에 대한 설명을 제공하는 텍스트로, 프로그램 실행에는 영향을 주지 않습니다. 주석은 오직 개발자가 코드를 이해하는 데 도움을 주기 위해 사용됩니다.

주석은 코드에서 매우 중요한 요소입니다!

# 한 줄 주석

'''
여러 줄 주석
작은따옴표 3개를 연속으로 입력
'''

"""
여러 줄 주석
큰따옴표 3개를 연속으로 입력
"""

변수 (Variables)

변수란 무엇인가?

변수는 데이터의 상태를 기록하는 저장 공간입니다. 게임을 예로 들면, 캐릭터의 레벨, 인벤토리의 아이템, 맵 상의 위치 등 끊임없이 변하는 데이터를 프로그램이 실행되는 동안 저장해야 합니다. 이러한 개념이 바로 변수입니다.

변수 문법

그렇다면 변수는 어떻게 사용할까요? 다음 코드를 살펴보세요.

user_name = 'alice'
# 위 코드는 오른쪽의 값('alice')을 왼쪽의 변수(user_name)에 할당하는 과정입니다. 이를 변수 정의라고 합니다.
# 주의: 등호(=)는 수학적 등호가 아니라 할당 연산자입니다.
print(user_name)  # 출력 결과: alice
# 변수가 정의된 후에는 변수 이름을 통해 해당 변수에 연결된 값을 참조할 수 있습니다.

요약:
변수명 = 데이터값
변수는 데이터값을 찾기 위한 매개체 역할을 합니다.
=는 변수를 정의하고 값을 할당하는 할당 연산자입니다.
데이터값은 단일 값일 수도 있고 표현식의 결과일 수도 있으며, 최종적으로 변수에 저장됩니다.

참고: 변수를 정의하거나 값을 할당할 때는 등호 오른쪽이 먼저 실행되어 결과 값을 얻은 후, 그 값을 왼쪽 변수에 할당합니다.

변수의 메모리 동작 원리

코드가 실행되면 모든 데이터는 메모리(RAM)에 저장됩니다. 하지만 메모리는 매우 크기 때문에, 작은 데이터 하나를 찾는 것은 '바늘에서 실 찾기'와 같습니다. 따라서 변수는 데이터가 저장된 메모리 주소를 저장하는 역할을 하며, 이 과정을 연결(binding)이라고 합니다.

중요한 점:

  • 하나의 변수 이름은 동시에 하나의 값만 연결할 수 있습니다.
  • 하나의 값은 여러 변수에 의해 연결될 수 있습니다.
  • 변수 이름끼리는 서로 직접 연결될 수 없습니다.

다음 두 예제를 통해 이해해 봅시다.

num1 = 10
num2 = num1
print(num2)
# 질문: 이때 num2는 무엇과 연결되어 있을까요?

코드를 한 줄씩 분석해 보겠습니다.

첫 번째 줄: num1이 값 10과 연결됩니다.

두 번째 줄: num2num1과 연결된다고 오해하기 쉽습니다. 하지만 그렇지 않습니다! 변수 이름끼리는 직접 연결되지 않습니다. 따라서 등호 오른쪽인 num1이 연결된 값 10을 찾아 그 값을 num2에 할당합니다. 결과적으로 num2도 값 10과 연결됩니다.

x = 10
x = x + 1
print(x)
# 질문: 출력 결과는 10일까요, 11일까요?

주의: =는 할당 연산자이므로, 두 번째 줄은 수학적인 10 = 11이 아닙니다. 첫 번째 줄에서 x가 연결된 값 10을 가져와 1을 더한 결과(11)를 다시 x에 할당합니다. x는 동시에 하나의 값만 연결할 수 있으므로, 첫 번째 줄에서는 10, 두 번째 줄 이후로는 11을 가리킵니다.

변수 이름 규칙

  1. 파이썬은 영문자, 숫자, 밑줄(_)의 조합만 변수 이름으로 인식합니다.
  2. 숫자로 변수 이름을 시작할 수 없습니다.
  3. 파이썬의 예약어(keyword)와 충돌하는 이름은 사용할 수 없습니다.
# 올바른 변수 이름
my_name = 'alice'
item_1 = 10
_info = '정보'
_ = '어떤 값'

# 잘못된 변수 이름
user-name = 10   # 하이픈(-) 사용 불가
1list = []       # 숫자로 시작
print = '키워드' # print는 내장 함수 이름이므로 사용 자제
'''
사실 print 변수에 값을 할당하는 것은 가능하지만,
이후 print() 함수를 사용할 수 없게 됩니다.
'''

참고: 파이썬은 한글 변수명도 지원하지만, 일반적으로 사용되지 않으며 특정 환경에서 오류가 발생할 수 있습니다.

이 외에도 코드 작성자들이 따르는 몇 가지 관례가 있습니다.

첫째, 변수 이름은 '의미를 알 수 있도록' 지어야 합니다. 그렇지 않으면 나중에 변수의 의미를 기억하지 못해 코드를 다시 뒤져봐야 합니다.

age = 18
# age 변수를 보면 값의 의미를 바로 알 수 있습니다.
a = 18
# a 변수가 무엇을 의미하는지 알기 어려워 코드에 혼란을 줍니다.

둘째, 변수 이름에는 몇 가지 일반적인 스타일이 있습니다.

  1. 스네이크 케이스 (snake_case): 단어 사이를 밑줄로 연결합니다. 파이썬에서 가장 흔히 사용되는 방식입니다.
    예: son_of_beach
  2. 파스칼 케이스 (PascalCase): 각 단어의 첫 글자를 대문자로 씁니다. 다른 언어(예: 자바스크립트)에서 자주 사용됩니다.
    예: SonOfBeach
  3. 카멜 케이스 (camelCase): 첫 단어는 소문자로 시작하고, 이후 각 단어의 첫 글자는 대문자로 씁니다.
    예: sonOfBeach

상수 (Constants)

상수는 이름 그대로 변하지 않는 값을 의미합니다. 일상생활에서 '국경일(10월 1일)'처럼 자주 바뀌지 않는 값을 기록하기 위해 상수 개념이 사용됩니다.

많은 프로그래밍 언어에서 한 번 할당된 상수는 값을 변경할 수 없습니다. 하지만 파이썬에서 상수는 단순한 관례일 뿐이며, 변수와 기술적으로 동일합니다.

파이썬에서는 변수 이름을 모두 대문자로 작성하여 상수임을 표시합니다.

NATIONAL_DAY = '10월 1일'
# 만약 모두 대문자인 변수를 발견하면, 해당 값을 변경하지 않는 것이 관례입니다. 하지만 변경도 가능합니다:
NATIONAL_DAY = '10월 1일 (목)'
print(NATIONAL_DAY)
# 출력 결과: 10월 1일 (목)
# 이처럼 상수 값도 새로 할당될 수 있습니다.

결론적으로, 파이썬에서는 모두 대문자로 작성된 변수를 함부로 변경해서는 안 됩니다. 이는 해당 변수를 작성한 개발자가 '이것은 상수이니 변경하지 마세요'라는 의사를 표현한 것이기 때문입니다.

태그: 파이썬 변수 주석 상수 할당연산자

6월 4일 17:42에 게시됨