logo

[Python] 변수와 데이터 타입

 

변수란 무엇인가?

 

변수의 정의

변수(variable)는 데이터를 저장하는 공간 또는 그 공간의 이름을 말합니다. 프로그래밍에서 변수는 데이터를 처리하기 위해 사용되며, 저장된 값은 프로그램 실행 도중 변경될 수 있습니다. 변수를 사용함으로써 코드의 가독성을 높이고, 데이터를 재사용하며, 메모리 사용을 최적화할 수 있습니다.

 

변수 선언 및 할당 방법

Python에서 변수를 선언하고 값을 할당하는 것은 매우 간단합니다. 변수명을 작성하고 = 연산자를 사용하여 값을 할당합니다. 예를 들어, 정수 10을 저장하는 변수를 만들고 싶다면 아래와 같이 작성할 수 있습니다.

number = 10

이 경우, number라는 이름의 변수가 생성되고, 정수 10이 그 변수에 저장됩니다.

변수에는 다양한 타입의 값이 할당될 수 있으며, 같은 변수에 다른 타입의 값을 재할당할 수도 있습니다.

name = "John"
age = 30
 

변수명 작성 규칙

변수명을 작성할 때는 몇 가지 규칙을 따라야 합니다.

  1. 변수명은 문자(letter), 밑줄(_), 또는 숫자로 시작할 수 있으나 숫자로 시작할 수는 없습니다.
  2. Python의 키워드(예: if, for, class 등)는 변수명으로 사용할 수 없습니다.
  3. 변수명은 대소문자를 구분합니다. 즉, Ageage는 서로 다른 변수입니다.
  4. 밑줄을 제외한 특수문자는 변수명에 사용할 수 없습니다.

예를 들어, my_variable, variable2, user_age는 유효한 변수명입니다.

 

동적 타이핑

Python은 동적 타이핑 언어입니다. 이는 변수의 타입이 런타임에 결정되고, 선언할 때 명시적으로 타입을 지정할 필요가 없음을 의미합니다. 변수에 다른 타입의 값을 재할당할 수 있어, 프로그래밍 시 유연성을 제공합니다.

x = 4      # x는 정수형
x = "Sally"  # x의 타입이 문자열로 변경됨
 

타입 힌트 (Type Hint)

Python 3.5+부터는 타입 힌트(type hint) 기능을 통해 변수에 저장될 값의 타입을 명시적으로 표현할 수 있습니다. 타입 힌트는 변수의 타입을 강제하지는 않지만, 코드의 가독성을 높이고, 코드 에디터에서 타입 체크를 지원하여 개발 과정을 돕습니다.

age: int = 20
name: str = "Alice"

위 코드에서 age 변수는 정수를, name 변수는 문자열을 명시적으로 표기합니다. 타입 힌트는 코드의 유지보수에 큰 도움이 됩니다.


 

Python의 기본 데이터 타입

Python은 다양한 데이터 타입을 지원하며, 각각의 데이터 타입은 특정 종류의 데이터를 표현하기 위해 설계되었습니다. 이 중 기본적으로 알아야 할 데이터 타입은 숫자형, 불리언, 그리고 None 타입입니다. 이제 이들에 대해 자세히 살펴보겠습니다.

 

숫자형

정수형 (int)

정수형은 소수점이 없는 숫자를 나타냅니다. Python에서는 int로 표현되며, 양의 정수, 0, 음의 정수 등을 포함합니다. 예를 들어, -3, 0, 2048 등이 정수형 데이터입니다.

num1 = 10
print(type(num1))  # <class 'int'>

부동소수점 수 (float)

부동소수점 수는 소수점을 포함하는 실수입니다. Python에서는 float로 표현됩니다. 예를 들어, 3.14, -0.001, 2.0 등이 부동소수점 수입니다.

num2 = 3.14
print(type(num2))  # <class 'float'>

복소수 (complex)

복소수는 실수부와 허수부로 구성된 수를 의미합니다. Python에서 복소수는 complex 타입으로 표현되며, j 또는 J를 사용해 허수부를 나타냅니다. 예를 들어, 1+2j는 실수부가 1이고, 허수부가 2인 복소수입니다.

num3 = 1+2j
print(type(num3))  # <class 'complex'>
 

불리언 (bool)

불리언 타입은 참(True)과 거짓(False) 두 가지 값만을 가집니다. 조건문, 반복문, 조건식 등에서 논리적 판단을 위해 사용됩니다. Python에서는 bool로 표현됩니다.

truthy = True
falsy = False
print(type(truthy))  # <class 'bool'>
 

None 타입

None 타입은 "값이 없음"을 나타내는 특수한 타입입니다. 변수가 아무런 값도 가지고 있지 않을 때 None을 할당할 수 있습니다. 이는 다른 언어의 null이나 nil과 유사한 개념입니다. Python에서는 None으로 표현됩니다.

nothing = None
print(type(nothing))  # <class 'NoneType'>

이상으로 Python의 기본 데이터 타입에 대해 살펴보았습니다. 각 데이터 타입은 서로 다른 종류의 데이터를 저장하고 처리하는 데 적합하며, 프로그래밍 시 이들의 특성을 잘 이해하고 사용하는 것이 중요합니다.


 

문자열 (str)

 

문자열의 정의

문자열은 하나 이상의 문자로 구성된 데이터 유형입니다. 문자들의 나열로 생각할 수 있으며, Python에서는 이 문자열을 표현하기 위해 작은따옴표(' '), 큰따옴표(" "), 또는 세 개의 따옴표(''' ''' 또는 """ """)를 사용합니다. 예를 들어, 'Hello', "Python", '''Learn''', """Programming""" 모두 유효한 문자열 표현입니다. 문자열은 변경할 수 없는(immutable) 데이터 유형이므로, 한 번 생성된 문자열은 수정할 수 없고 새로운 문자열을 생성해야만 합니다.

# 문자열 예시
greeting = "Hello, World!"
print(greeting)
 

문자열의 기본 연산

Python은 문자열에 대한 다양한 연산을 지원합니다. 가장 기본적인 연산은 문자열의 연결(concatenation)과 반복(repetition)입니다.

  • 연결(Concatenation): 두 개 이상의 문자열을 하나로 합치기 위해 + 연산자를 사용합니다.
  • 반복(Repetition): 문자열을 반복하기 위해 * 연산자와 숫자를 사용합니다.
# 연결 예시
str1 = "Hello"
str2 = "Python"
print(str1 + ", " + str2 + "!")  # 출력: Hello, Python!

# 반복 예시
str3 = "Python"
print(str3 * 3)  # 출력: PythonPythonPython
 

이스케이프 문자 (Escape Characters)

이스케이프 문자는 문자열 내에서 특별한 의미를 가지는 문자를 표현하는 데 사용합니다. 백슬래시(\) 뒤에 오는 문자가 이스케이프 문자로 처리됩니다. 주로 줄 바꿈, 탭, 따옴표 등을 표현할 때 사용됩니다.

  • \n: 줄 바꿈
  • \t: 탭
  • \', \": 따옴표 내에서 따옴표 표현
# 이스케이프 문자 예시
print("Line1\nLine2\nLine3")  # 줄 바꿈 예시
print("Column1\tColumn2")    # 탭 예시
print("He said, \"Python is awesome!\"")  # 따옴표 예시
 

문자열 포맷팅

문자열 포맷팅은 문자열 내에서 특정 값을 변수로부터 동적으로 삽입하는 방법입니다. Python 3.6부터는 f-strings(formatted string literals)가 가장 권장되는 방법으로, 간결하고 읽기 쉬운 코드를 작성할 수 있습니다. 또한, format() 메소드나 % 연산자를 사용하는 방법도 있습니다.

f-strings 사용 예시:

name = "Python"
version = 3.8
print(f"{name} {version} is great!")  # 출력: Python 3.8 is great!

format() 메소드 사용 예시:

name = "Python"
version = 3.8
print("{} {} is great!".format(name, version))  # 출력: Python 3.8 is great!

이러한 방법들을 사용하여 문자열 내에서 다양한 데이터 유형을 유연하게 표현할 수 있습니다. 문자열 포맷팅을 통해 로깅, 사용자 인터페이스 메시지, 데이터 처리 결과의 동적 표현과 같은 다양한 곳에서 유용하게 사용됩니다.


 

형 변환 (Type Conversion)

형 변환(Type Conversion)은 데이터 타입을 다른 데이터 타입으로 변경하는 작업을 의미합니다. Python에서 형 변환은 크게 두 가지 방식으로 이루어집니다: 암시적 형 변환(Implicit Type Conversion)과 명시적 형 변환(Explicit Type Conversion).

 

암시적 형 변환

암시적 형 변환은 Python 인터프리터가 프로그램을 실행하는 동안 자동으로 수행하는 형 변환입니다. 사용자가 직접 타입 변환 함수를 사용하지 않아도, Python은 연산의 요구 사항에 따라 데이터 타입을 자동으로 변환합니다. 주로 두 가지 이상의 다른 데이터 타입이 있는 연산에서 발생합니다.

예시: 사용자가 정수와 부동소수점 수를 더할 때, Python은 정수를 부동소수점 수로 암시적으로 변환하여 연산의 정확성을 보장합니다.

a = 5   # 정수
b = 3.2 # 부동소수점 수

# 암시적 형 변환 발생
result = a + b
print(result)  # 8.2 출력

여기서 a는 정수형에서 부동소수점형으로 암시적으로 형 변환이 이루어지며, 이를 통해 연산이 수행됩니다.

 

명시적 형 변환

명시적 형 변환은 개발자가 프로그램 내에서 명확히 형 변환 함수를 사용하여 데이터 타입을 변경하는 행위를 말합니다. Python에서는 int(), float(), str() 등의 내장 함수를 사용하여 다양한 데이터 타입 간에 변환할 수 있습니다.

예시:

  1. 문자열을 정수로 변환하기:

    number_string = "123"
    number_int = int(number_string)
    print(number_int)  # 123 출력
    
  2. 정수를 부동소수점 수로 변환하기:

    number_int = 456
    number_float = float(number_int)
    print(number_float)  # 456.0 출력
    
  3. 부동소수점 수를 문자열로 변환하기:

    number_float = 789.01
    number_string = str(number_float)
    print(number_string)  # '789.01' 출력
    

명시적 형 변환은 프로그램에서 특정한 데이터 타입을 요구할 때 매우 유용합니다. 예를 들어, 사용자 입력을 받을 때 기본적으로 문자열로 처리되기 때문에, 숫자로 연산을 해야 할 경우 명시적으로 해당 데이터 타입으로 변환해야 합니다.

 

결론

형 변환은 Python 프로그래밍에서 빈번히 발생하는 중요한 작업입니다. 암시적 형 변환은 프로그램의 작동을 간소화해주지만, 때로 예상치 못한 타입 변환으로 인해 오류가 발생할 수 있습니다. 반면, 명시적 형 변환은 개발자가 더 많은 제어권을 가지고 데이터 타입을 명확히 지정할 수 있게 해줍니다. 따라서 형 변환의 메커니즘을 잘 이해하고 적절히 사용하는 것이 중요합니다.

Previous
주피터 노트북 실행