[Python] 변수와 데이터 타입
변수란 무엇인가?
변수의 정의
변수(variable)는 데이터를 저장하는 공간 또는 그 공간의 이름을 말합니다. 프로그래밍에서 변수는 데이터를 처리하기 위해 사용되며, 저장된 값은 프로그램 실행 도중 변경될 수 있습니다. 변수를 사용함으로써 코드의 가독성을 높이고, 데이터를 재사용하며, 메모리 사용을 최적화할 수 있습니다.
변수 선언 및 할당 방법
Python에서 변수를 선언하고 값을 할당하는 것은 매우 간단합니다. 변수명을 작성하고 =
연산자를 사용하여 값을 할당합니다. 예를 들어, 정수 10을 저장하는 변수를 만들고 싶다면 아래와 같이 작성할 수 있습니다.
number = 10
이 경우, number
라는 이름의 변수가 생성되고, 정수 10이 그 변수에 저장됩니다.
변수에는 다양한 타입의 값이 할당될 수 있으며, 같은 변수에 다른 타입의 값을 재할당할 수도 있습니다.
name = "John"
age = 30
변수명 작성 규칙
변수명을 작성할 때는 몇 가지 규칙을 따라야 합니다.
- 변수명은 문자(letter), 밑줄(_), 또는 숫자로 시작할 수 있으나 숫자로 시작할 수는 없습니다.
- Python의 키워드(예:
if
,for
,class
등)는 변수명으로 사용할 수 없습니다. - 변수명은 대소문자를 구분합니다. 즉,
Age
와age
는 서로 다른 변수입니다. - 밑줄을 제외한 특수문자는 변수명에 사용할 수 없습니다.
예를 들어, 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()
등의 내장 함수를 사용하여 다양한 데이터 타입 간에 변환할 수 있습니다.
예시:
-
문자열을 정수로 변환하기:
number_string = "123" number_int = int(number_string) print(number_int) # 123 출력
-
정수를 부동소수점 수로 변환하기:
number_int = 456 number_float = float(number_int) print(number_float) # 456.0 출력
-
부동소수점 수를 문자열로 변환하기:
number_float = 789.01 number_string = str(number_float) print(number_string) # '789.01' 출력
명시적 형 변환은 프로그램에서 특정한 데이터 타입을 요구할 때 매우 유용합니다. 예를 들어, 사용자 입력을 받을 때 기본적으로 문자열로 처리되기 때문에, 숫자로 연산을 해야 할 경우 명시적으로 해당 데이터 타입으로 변환해야 합니다.
결론
형 변환은 Python 프로그래밍에서 빈번히 발생하는 중요한 작업입니다. 암시적 형 변환은 프로그램의 작동을 간소화해주지만, 때로 예상치 못한 타입 변환으로 인해 오류가 발생할 수 있습니다. 반면, 명시적 형 변환은 개발자가 더 많은 제어권을 가지고 데이터 타입을 명확히 지정할 수 있게 해줍니다. 따라서 형 변환의 메커니즘을 잘 이해하고 적절히 사용하는 것이 중요합니다.