본문 바로가기
Python

Python - 변수와 자료형

by 문찬웅 2024. 11. 14.

들어가며

Python은 간결하고 읽기 쉬운 문법으로 널리 사용되는 프로그래밍 언어입니다. 실제 개발에서 변수와 데이터 타입을 이해하는 것은 효율적이고 오류 없는 코드를 작성하는 데 매우 중요합니다. 이 문서에서는 개발 영역에서 자주 사용되는 예제를 통해 Python에서 변수와 데이터 타입을 어떻게 사용하는지 알아보고, 각 자료형의 크기와 데이터 형태에 대해 자세히 알아보겠습니다.

1. 변수란 무엇인가?

변수는 데이터를 저장하기 위한 이름을 가진 메모리 공간입니다. 쉽게 말해, 변수는 데이터를 담는 상자라고 생각할 수 있습니다. 변수에 값을 할당하면 해당 변수는 그 값을 참조하게 됩니다. 이는 데이터베이스 연결 정보, 사용자 입력, 설정 값 등 다양한 데이터를 저장하고 활용하는 데 사용됩니다.

# 변수 선언 및 값 할당
database_host = "localhost"
database_port = 3306
is_connected = False

2. 변수 이름 규칙

변수 이름을 지정할 때 다음과 같은 규칙을 따라야 합니다:

  • 영문자(대소문자 구분), 숫자, 밑줄(_)로 구성됩니다.
  • 숫자로 시작할 수 없습니다.
  • 공백이나 특수 문자를 사용할 수 없습니다.
  • 예약어(키워드)는 사용할 수 없습니다. (예약어란 Python에서 특별한 의미로 사용되는 단어들입니다.)
# 올바른 변수 이름 예시
user_email = "user@example.com"
max_retries = 5
_is_valid = True

# 잘못된 변수 이름 예시
2nd_attempt = False    # 숫자로 시작함
user-name = "admin"    # 하이픈(-) 사용 불가
def = "function"       # 예약어 사용 불가

3. 데이터 타입

Python은 다양한 데이터 타입을 제공합니다. 데이터 타입이란 데이터의 종류를 의미합니다. 각 데이터 타입은 메모리에서 다르게 저장되며, 특정한 방법으로 처리됩니다. 주요 데이터 타입은 다음과 같습니다.

3.1 숫자형 (Numeric Types)

  • 정수형 (int): 소수점이 없는 숫자를 표현합니다. Python 3에서는 정수형의 크기에 제한이 없으며, 메모리가 허용하는 한 무한한 크기의 정수를 다룰 수 있습니다.
    • 메모리 크기: 저장되는 값에 따라 동적으로 크기가 변합니다.
    • 데이터 형태: 정수 값을 저장하는 객체.
  • total_users = 1024
  • 실수형 (float): 소수점이 있는 숫자를 표현합니다. 일반적으로 64비트 부동소수점(IEEE 754 표준)을 사용합니다.
    • 메모리 크기: 64비트 (8바이트).
    • 데이터 형태: 소수점이 있는 숫자.
  • cpu_usage = 57.3 # CPU 사용률 (%)
  • 복소수형 (complex): 실수부와 허수부로 구성된 복소수를 표현합니다.
    • 메모리 크기: 두 개의 64비트 부동소수점 숫자 (실수부와 허수부).
    • 데이터 형태: 복소수 객체.
  • impedance = 5 + 2j

3.2 문자열형 (String Type)

문자열은 문자들의 집합으로, 작은따옴표('')나 큰따옴표("")로 묶어서 표현합니다. 한 번 생성된 문자열은 변경할 수 없는(불변) 타입이며, 다양한 언어의 문자를 지원합니다.

api_endpoint = "/v1/users"
  • 메모리 크기: 문자열의 길이에 따라 다름 (문자당 최소 1바이트 이상).
  • 데이터 형태: 변경할 수 없는 문자 시퀀스 객체.

3.3 불리언형 (Boolean Type)

참(True) 또는 거짓(False)을 나타내는 데이터 타입입니다. 주로 조건을 확인하거나 상태를 표현할 때 사용됩니다.

is_active = True
  • 메모리 크기: 내부적으로 정수 0(False)과 1(True)로 표현됩니다.
  • 데이터 형태: 불리언 객체.

3.4 시퀀스형 (Sequence Types)

  • 리스트 (list): 여러 항목을 순서대로 저장하는 자료형으로, 대괄호([])를 사용합니다. 리스트 내용을 변경할 수 있으며, 다양한 데이터 타입을 포함할 수 있습니다.
    • 메모리 크기: 리스트 자체의 크기 + 각 요소의 크기의 합.
    • 데이터 형태: 변경 가능한 순서가 있는 객체 모음.
  • user_permissions = ["read", "write", "execute"]
  • 튜플 (tuple): 리스트와 비슷하지만 한 번 생성하면 내용을 변경할 수 없는 자료형입니다. 소괄호(())를 사용합니다.
    • 메모리 크기: 튜플 자체의 크기 + 각 요소의 크기의 합.
    • 데이터 형태: 변경할 수 없는 순서가 있는 객체 모음.
  • server_address = ("127.0.0.1", 8080)
  • 레인지 (range): 연속된 숫자의 시퀀스를 생성합니다. 주로 반복문에서 사용됩니다.
    • 메모리 크기: 시작점, 종료점, 스텝 정보를 저장하는 작은 크기의 객체.
    • 데이터 형태: 변경할 수 없는 숫자 시퀀스 객체.
  • for i in range(5): print(i)

3.5 집합형 (Set Types)

  • 집합 (set): 중복되지 않는 요소들의 모음으로, 중괄호({})를 사용합니다. 순서가 없고 중복을 허용하지 않습니다.
    • 메모리 크기: 요소의 개수와 크기에 따라 다름.
    • 데이터 형태: 변경 가능한 고유한 객체의 모음.
  • unique_ips = {"192.168.1.1", "10.0.0.1"}
  • 불변 집합 (frozenset): 일반 집합과 같지만 한 번 생성하면 변경할 수 없는 집합입니다.
    • 메모리 크기: 요소의 개수와 크기에 따라 다름.
    • 데이터 형태: 변경할 수 없는 고유한 객체의 모음.
  • constant_values = frozenset([3.14, 2.718])

3.6 매핑형 (Mapping Type)

  • 딕셔너리 (dict): 키(key)와 값(value)의 쌍으로 이루어진 데이터 구조로, 중괄호({})를 사용합니다. 각 키는 고유해야 합니다.
    • 메모리 크기: 저장된 항목의 수와 각 키-값 쌍의 크기에 따라 다름.
    • 데이터 형태: 변경 가능한 키-값 쌍의 모음.
  • config = { "host": "localhost", "port": 3306, "debug": True }

4. 데이터 타입 확인 및 변환

4.1 데이터 타입 확인

type() 함수를 사용하여 변수의 데이터 타입을 확인할 수 있습니다.

timeout = 30
print(type(timeout))  # <class 'int'>

4.2 데이터 타입 변환

데이터 타입을 다른 타입으로 변환하는 것을 형 변환(casting)이라고 합니다. Python에서는 다음과 같은 함수를 사용하여 형 변환을 할 수 있습니다.

# 문자열을 정수로 변환
retry_limit = int("5")

# 정수를 문자열로 변환
error_code = 404
error_message = "Error " + str(error_code)

# 실수를 정수로 변환 (소수점 이하 버림)
disk_usage = int(75.8)  # 결과: 75

5. 변수와 데이터 타입 활용 예시

다음은 변수와 데이터 타입을 활용한 간단한 프로그램 예시입니다.

# 사용자로부터 상품 가격과 수량 입력 받기
price_input = input("상품 가격을 입력하세요: ")
quantity_input = input("수량을 입력하세요: ")

# 입력된 문자열을 실수와 정수로 변환
price = float(price_input)
quantity = int(quantity_input)

# 총 가격 계산
total_price = price * quantity

# 부가세 계산 (10%)
vat = total_price * 0.1

# 최종 가격 계산
final_price = total_price + vat

# 결과 출력
print(f"총 가격은 {total_price}원이며, 부가세는 {vat}원입니다.")
print(f"최종 결제 금액은 {final_price}원입니다.")

이 예시에서는 사용자로부터 입력을 받아 적절한 데이터 타입으로 변환하고, 계산을 수행한 후 결과를 출력합니다.

참고 자료