콘텐츠 내 자동삽입광고

광고1

posted by 초코생크림빵 2025. 8. 5. 20:04
반응형

파이썬에서는 변수는 값이 할당되는 순간에 생성됩니다.

그리고 프로그래밍 언어에서 등호(=)는 오른쪽 값이 왼쪽에 저장(할당) 한다는 의미이며, 왼쪽은 저장 공간을 의미합니다.

프로그램에서는 등호(=)를 대입연산자라고 부릅니다.

 

파이썬은 다른 언어와 달리 변수를 선언할 때 데이터 타입을 명시할 필요가 없습니다. 변수에 값을 할당하면 파이썬 인터프리터가 자동으로 데이터 타입을 추론하여 결정합니다.

변수 선언 기본 규칙

  • 변수 이름은 문자로 시작해야 하며, 숫자, 밑줄(_) 등을 포함할 수 있습니다.
  • 변수 이름은 대소문자를 구분합니다.
  • 파이썬의 예약어(예: if, for, while 등)는 변수 이름으로 사용할 수 없습니다.
Python

# 변수 선언 예시
my_variable = "Hello, Python!"  # 문자열(string)
age = 30                    # 정수(integer)
pi = 3.14159                # 실수(float)
is_active = True            # 불리언(boolean)

 

동적 타이핑 (Dynamic Typing)

파이썬의 가장 큰 특징 중 하나는 동적 타이핑입니다. 이는 한 변수가 프로그램 실행 중에 다른 데이터 타입의 값을 가질 수 있다는 의미입니다.

 

Python

x = 10       # x는 정수(integer)
print(type(x))  # <class 'int'>

x = "Hello"  # x는 이제 문자열(string)
print(type(x))  # <class 'str'>


type() 함수를 사용하면 변수에 할당된 현재 데이터 타입을 확인할 수 있습니다.

 

데이터 타입 명시 (Type Hinting)

파이썬 3.5 버전부터는 타입 힌트(Type Hinting) 기능이 추가되어, 변수나 함수의 매개변수에 데이터 타입을 명시적으로 표시할 수 있습니다. 이는 변수의 타입을 강제하는 것이 아니라, 코드의 가독성을 높이고 개발자가 예상하는 타입을 전달하여 코드 오류를 줄이는 데 도움을 줍니다.

 

Python

# 타입 힌트 사용 예시
name: str = "Alice"
age: int = 25

def greeting(name: str) -> str:
    return f"Hello, {name}"

# 타입 힌트는 타입 체크 도구(예: Mypy)를 사용할 때 유용합니다.
# 파이썬 인터프리터는 힌트를 무시하고 실행됩니다.

 

주요 내장 데이터 타입

파이썬에서 자주 사용되는 내장 데이터 타입은 다음과 같습니다.

  • 정수형 (int): 양수, 음수, 0을 포함하는 정수
  • 실수형 (float): 소수점이 있는 숫자
  • 문자열 (str): 텍스트 데이터. 작은따옴표(') 또는 큰따옴표(")로 감쌉니다.
  • 불리언 (bool): 참(True) 또는 거짓(False) 값을 가집니다.
  • 리스트 (list): 여러 값을 순서대로 저장하는 자료구조
  • 튜플 (tuple): 리스트와 유사하지만, 한 번 생성되면 변경할 수 없습니다.
  • 딕셔너리 (dict): '키(key)'와 '값(value)' 쌍으로 이루어진 자료구조
  • 집합 (set): 중복을 허용하지 않는 자료구조

파이썬은 변수에 값을 할당하는 것만으로 데이터 타입을 유연하게 처리할 수 있어, 개발 생산성을 높이는 데 큰 장점이 있습니다.

 

질문을 통해 개념잡기)

선언을 하고 사용할 수도 있나요?

네, 파이썬에서는 변수 선언만 하고 값을 할당하지 않은 채로 사용할 수는 없습니다.

변수는 값을 할당하는 순간 선언과 동시에 해당 데이터 타입을 가지게 됩니다. 따라서 값을 할당하지 않은 변수를 사용하려고 하면 NameError가 발생합니다.

 

Python

# 에러가 발생하는 경우
# a는 선언되지 않았으므로
print(a)


위 코드를 실행하면 NameError: name 'a' is not defined라는 오류 메시지가 나타납니다.

 

값을 할당하는 시점

변수를 사용하려면 반드시 값을 할당해야 합니다.

 

Python

# 먼저 변수에 값을 할당해야 합니다.
b = 10
print(b)  # 10

 

이처럼 파이썬은 변수의 '선언'과 '초기화'를 한 번에 처리하는 방식을 따릅니다. 즉, 변수에 값을 할당하는 행위 자체가 변수를 생성하는 것입니다.

만약 특정 변수에 어떤 값이 들어갈지 나중에 결정되지만, 일단 변수를 '만들어 놓고' 싶다면 다음과 같이 None 값을 할당해 둘 수 있습니다.

 

Python

# 나중에 값이 할당될 변수
c = None

# 이후에 필요에 따라 값을 할당합니다.
c = "Hello, world!"
print(c)  # Hello, world!

 

None은 "값이 없음"을 나타내는 파이썬의 특별한 값으로, 변수가 아직 어떤 유효한 데이터도 가지지 않았음을 명확히 해줍니다.

 

질문)

정수형을 선언하고자 할 때는 어떻게 하나요?

파이썬에서 정수형 변수를 선언하는 방법은 매우 간단합니다. 위에서 설명했듯이, 변수에 정수 값을 할당하기만 하면 됩니다.

정수형 변수 선언 방법

별도의 키워드나 타입 명시 없이, 변수 이름에 정수 값을 할당하면 파이썬 인터프리터가 자동으로 해당 변수를 정수형(int)으로 인식합니다.

Python

# 양의 정수 할당
positive_number = 100

# 음의 정수 할당
negative_number = -50

# 0 할당
zero_number = 0

 

type() 함수를 사용하여 변수의 데이터 타입을 확인해 보면 모두 <class 'int'>가 나오는 것을 볼 수 있습니다.

 

Python

positive_number = 100
print(type(positive_number))  # 출력: <class 'int'>

negative_number = -50
print(type(negative_number))  # 출력: <class 'int'>

 

정수형의 특징

파이썬의 정수형은 다른 프로그래밍 언어와 달리 크기에 제한이 없습니다. 시스템 메모리가 허용하는 한 매우 큰 정수도 표현할 수 있습니다.

Python

very_large_number = 123456789012345678901234567890
print(very_large_number)
print(type(very_large_number))

 

타입 힌트(Type Hinting)를 사용하여 정수형을 명시적으로 표시하기

선언 자체는 값을 할당하는 것만으로 충분하지만, 코드의 가독성을 높이고자 한다면 타입 힌트를 사용할 수 있습니다.

Python

# 타입 힌트를 사용하여 이 변수가 정수형임을 명시적으로 표시
my_age: int = 30

 

하지만 이 방식은 "이 변수는 정수형이어야 한다"는 개발자의 의도를 표현하는 것일 뿐, 실제로 변수에 정수가 아닌 값을 할당하는 것을 막지는 않습니다. 아래 예시를 보면 쉽게 이해할 수 있습니다.

 

Python

# 타입 힌트는 int이지만, 실제로는 문자열을 할당
# 파이썬 인터프리터는 오류를 내지 않습니다.
my_age: int = "서른"
print(my_age)  # 출력: 서른

 

따라서 파이썬에서 정수형을 선언하는 가장 기본적인 방법은 단순히 변수에 정수 값을 할당하는 것입니다.

 

 

질문)

다른 언어들 처럼 데이터 타입에 따라 메모리 크기가 다른데, 파이썬은 변수에 값을 할당되는 순간부터 생성되기때문에, 데이터 타입이 필요 없나요?

파이썬에서 변수에 데이터 타입을 명시적으로 선언하지 않아도 되는 주된 이유는 **동적 타이핑(Dynamic Typing)**이라는 언어의 특성 때문입니다.

말씀하신 것처럼, 파이썬은 변수에 값을 할당하는 순간 해당 값의 데이터 타입이 결정됩니다. 이 과정에서 파이썬 인터프리터는 내부적으로 값을 저장하기 위해 필요한 메모리 크기를 자동으로 관리합니다.

1. 동적 타이핑의 원리

다른 정적 언어(C, Java 등)는 변수를 선언할 때 메모리 공간을 미리 고정된 크기만큼 확보합니다. 예를 들어, C 언어에서 int 타입은 4바이트, char는 1바이트와 같이 크기가 정해져 있습니다.

반면 파이썬은 모든 변수를 **객체(Object)**로 다룹니다. 변수는 메모리 주소를 가리키는 이름일 뿐이며, 실제 값은 메모리의 다른 곳에 객체로 저장됩니다.

Python

x = 10  # 정수 객체 10이 메모리에 생성되고, 변수 x가 이 객체를 가리킵니다.
x = "Hello" # 문자열 객체 "Hello"가 새로 생성되고, 변수 x가 이제 이 객체를 가리킵니다.

이러한 방식 덕분에 파이썬은 변수의 타입이 실행 중에 바뀔 수 있고, 개발자는 복잡한 메모리 관리나 타입 선언에 신경 쓸 필요가 없어집니다.

 

2. 메모리 관리의 차이

파이썬은 메모리 관리를 자동으로 수행합니다. 객체가 더 이상 사용되지 않으면 **가비지 컬렉터(Garbage Collector)**가 자동으로 메모리에서 해당 객체를 해제합니다. 이 과정은 개발자가 직접 수행하지 않아도 되기 때문에 코딩이 훨씬 간편해집니다.

즉, 파이썬은 '변수에 할당되는 순간'에 데이터 타입이 결정되기 때문에, 미리 타입을 지정할 필요가 없는 것입니다. 이는 파이썬이 개발자 친화적이고 생산성이 높은 언어인 주요 이유 중 하나입니다.

정리하자면, 파이썬은 데이터 타입이 필요 없는 것이 아니라, 개발자가 직접 명시적으로 선언할 필요가 없는 것입니다. 인터프리터가 내부적으로 모든 데이터의 타입을 관리하고, 그에 맞는 메모리를 할당하는 방식입니다.

 

반응형

콘텐츠 내 자동삽입광고