Python 기초: 변수와 데이터 타입
by NyangPolice
Python 기초: 변수와 데이터 타입
타입 (Type) 이란?
프로그래밍에서 타입은 데이터의 종류를 말한다. 예를 들어 10은 정수(integer), 3.14는 실수(float), “Python”은 문자열(string) 이다. 데이터가 어떤 타입이냐에 따라서 적용 가능한 연산의 종류가 달라지므로 타입을 아는 것은 매우 중요하다. Python에는 다양한 데이터 타입이 있는데, 이 글에서는 가장 기초적인 타입에 대해 알아볼 것이다.
변수 선언
Python은 대표적인 동적 타입 언어이다. 즉, 변수를 선언할 때 타입을 명시적으로 지정하지 않아도 된다는 것을 의미한다. 이와 반대되는 개념으로 정적 타입 언어는 변수 선언 시 타입을 명시해주어야 한다. 대표적인 정적 타입 언어인 C와 비교해보자.
int age = 30;
age = 3.14;
printf("%d\n", age);
// 예상 출력 : 3
이렇게 선언하면 age는 정수 타입으로 선언된다. 타입이 지정되었으므로 age에는 정수만 할당할 수 있으며, 다른 타입의 값을 할당하려고 하면 자동으로 형변환이 이루어진다.
age = 30
age = "Python"
Python은 동적 타입 언어이므로 변수 선언 시 타입을 명시적으로 지정하지 않아도 된다. 즉, 변수의 타입은 할당된 값에 따라 결정된다. 따라서 같은 변수에 다른 타입의 값을 재할당하는 것이 가능하다. 다만 프로그램의 안정성을 위해 같은 변수에 다른 타입의 값을 재할당하는 것은 권장하지 않는다.
변수 이름 규칙
Python에서 변수 이름을 지을 때는 다음과 같은 규칙을 따라야 한다.
- 영문자(a-z, A-Z), 숫자(0-9), 밑줄(_)만 사용할 수 있다.
- 숫자로 시작할 수 없다. (2name은 불가, name2는 가능)
- Python의 예약어(if, for, while, class, return 등)는 변수 이름으로 사용할 수 없다.
네이밍 관례
규칙만 지키면 문법적으로는 문제가 없지만, 코드의 가독성을 위해 프로그래밍 언어마다 널리 쓰이는 네이밍 관례(naming convention)가 있다. 대표적인 관례는 다음과 같다.
snake_case: 단어 사이를 밑줄(_)로 연결한다. user_name, total_count처럼 쓴다.
camelCase: 첫 단어는 소문자로, 이후 단어의 첫 글자를 대문자로 쓴다. userName, totalCount처럼 쓴다.
PascalCase: 모든 단어의 첫 글자를 대문자로 쓴다. UserName, TotalCount처럼 쓴다.
Python에서는 변수와 함수에 snake_case를 사용하는 것이 표준 관례이다. PascalCase는 추후 배울 클래스 이름에 사용한다. 이는 Python의 공식 스타일 가이드인 PEP 8에서 권장하는 방식이다.
기본 데이터 타입
1. 숫자 타입
Python의 숫자 타입은 크게 세 가지가 있다.
정수 (int): 소수점이 없는 수를 말한다. 10, -3, 0 등이 정수에 해당한다. 정수끼리의 사칙연산은 대부분 정수를 반환하지만, 나눗셈(/)은 항상 실수를 반환한다. 정수 결과를 얻으려면 // 연산자를 사용해야 한다.
실수 (float): 소수점이 있는 수를 말한다. 3.14, -0.5, 100.0 등이 실수에 해당한다. 정수처럼 보이더라도 소수점이 붙으면 float으로 취급된다. 정수와 실수를 함께 연산하면 결과는 실수가 된다.
복소수 (complex): 실수부와 허수부로 이루어진 수이다. Python에서는 허수부에 j를 붙여 3 + 4j처럼 표현한다. .real과 .imag로 각각 실수부와 허수부를 확인할 수 있다. 수학이나 공학 분야에서 주로 사용되며, 일반적인 프로그래밍에서는 자주 쓰이지 않는다.
2. 문자열 (str)
문자열은 텍스트 데이터를 표현하는 타입이다. 큰따옴표(“)나 작은따옴표(‘) 모두 사용할 수 있으며, 여러 줄의 문자열은 삼중 따옴표(“”” 또는 ‘’‘)로 감싸서 표현한다.
문자열은 + 연산자로 이어붙일 수 있으며, 이를 문자열 연결(concatenation)이라 한다. []를 사용하면 특정 위치의 문자에 접근할 수 있는데, 이를 인덱싱(indexing)이라 한다. 인덱스는 0부터 시작하며, 음수 인덱스를 사용하면 뒤에서부터 접근할 수 있다. [시작:끝] 형태로 문자열의 일부분을 잘라낼 수도 있는데, 이를 슬라이싱(slicing)이라 한다. 단, 한번 생성된 문자열은 특정 위치의 문자를 변경할 수 없다(immutable).
문자열 앞에 f를 붙이면 f-string(포맷 문자열)이 되어, 중괄호({}) 안에 변수나 표현식을 직접 삽입할 수 있다. 문자열 연결(+)로도 같은 결과를 얻을 수 있지만, f-string을 사용하면 코드가 훨씬 간결하고 읽기 쉬워진다.
3. 불리언 (bool)
불리언은 참(True)과 거짓(False) 두 가지 값만 가지는 타입이다. 주로 조건문이나 비교 연산의 결과로 사용된다. and, or, not 연산자로 논리 연산을 수행할 수 있다. Python에서는 0, 0.0, 빈 문자열(""), 빈 리스트([]) 등이 False로 취급되고, 그 외의 값은 True로 취급된다.
타입 확인
Python은 동적 타입 언어이기 때문에 변수의 타입이 코드에 명시되지 않는다. 따라서 변수에 어떤 타입의 값이 들어있는지 확인해야 할 때가 있는데, type() 함수를 사용하면 해당 값의 타입을 확인할 수 있다.
타입 변환
서로 다른 타입 간에 연산이 필요하거나, 사용자 입력처럼 문자열로 들어온 데이터를 숫자로 처리해야 할 때 타입 변환이 필요하다. int(), float(), str(), bool() 등의 함수를 사용하면 값을 원하는 타입으로 변환할 수 있다.
단, 변환하려는 값이 해당 타입으로 해석될 수 없는 경우에는 에러가 발생한다. 예를 들어 "hello"는 숫자로 해석할 수 없으므로 int("hello")는 ValueError가 발생하고, “3.14”처럼 소수점이 포함된 문자열은 float()으로는 변환 가능하지만 int()로는 직접 변환할 수 없다.
마무리
이 글에서는 Python의 기본 데이터 타입인 숫자(int, float, complex), 문자열(str), 불리언(bool)과 함께 변수 선언, 타입 확인, 타입 변환에 대해 알아보았다. 다음 글에서는 여러 값을 하나로 묶어 관리할 수 있는 컬렉션 타입(리스트, 튜플, 딕셔너리, 셋)에 대해 다룰 예정이다.
다음 포스팅 : 파이썬 컬렉션 타입(List, Tuple, Dictionary, Set)
tags: python - 기초 - 변수 - 데이터타입Python 카테고리의 글 목록
-
-
Python 기초: 변수와 데이터 타입
-