지난 포스팅에서는 파이썬을 설치하는 방법에 대해서 알려드렸습니다.

이제 정말 기초부터 하나씩 알아보도록 하겠습니다. 우리가 프로그래밍을 배우는 이유는 사람이 하는 일을 컴퓨터에게 시키기 위해서입니다. 같은 패턴으로 반복해야 되는 일이나 기억하기 힘들어서 어딘가에 메모를 해두고 다시 찾아야되는 등의 사람의 두뇌나 신체적인 한계를 극복하고 더 효율을 높히기 위해서 프로그래밍을 사용합니다.

컴퓨터에게 명령을 내리기 위해서는 기계가 알아들을 수 있도록 말을 해야겠죠. 과거 어셈블리 같은 언어형태에서 점점 진화해서 지금은 사람의 언어와 많이 비슷해졌다고 합니다. 고급언어라고 표현하는데 급이 높아서 고급이 아니라 사람의 언어와 가까워서 이렇게 부릅니다.

이런 설명을 다시 하는 이유는 Python 외에 최근 많이 사용되고 있는 언어들의 기초문법은 상당히 닮아있습니다. Java, C# 혹은 Javascript 만 보더라도 기초문법은 거의 동일하다시피 하기 때문에, 기초를 탄탄히 익혀두면 다른 언어를 접하게 될 때 훨씬 수월할 것입니다.

자료형

자료형이란 자료의 형태를 말하는데, 데이터의 값 혹은 정보에 의해서 이러한 형태가 결정됩니다.

가장 기본적인(Primitive) 자료형태로는 정수, 실수, 문자, 불린(참/거짓) 등이 있습니다. 개발자들이 평소에 영어를 많이 섞어 쓰는 이유가 이런 한글표현 보다 영어표현이 더 명확하기 때문인데요. 정수, 실수 이렇게 말하는 경우는 거의 없습니다. 보통 Integer(인티저), Float(플로트), String(스트링) 같이 부른답니다.

이번 포스팅에서는 각각의 자료형을 다루는 방법까지 설명하기엔 내용이 방대해서, 대표적인 자료형이 어떤게 있는지 살펴보도록 하겠습니다.

a = 3
b = 3.1
c = '마린즈'
d = True

우리는 수학시간에 정수,실수 같은 숫자의 종류에 대해서 배운 적이 있습니다. C++이나 Java 같은 언어에서는 이런 숫자의 종류를 더 세분화해서 다루지만 Python 에서는 정수(Integer)와 실수(Float) 로만 구분해서 다룹니다. 훨씬 쉽고 간단하겠죠.

정수형 (Integer)

수학적인 정의를 보자면 양의 정수, 음의 정수, 0 을 포함하는 수를 의미합니다. 그냥 간단하게 소수점이 없는 숫자라고 생각해도 됩니다. 유리수니 무리수니 이런 개념까지 정의하는 구분은 아닙니다.

파이썬이 아닌 언어에서는 숫자의 자리수 혹은 소수점 방식에 따라서 할당하는 메모리의 사이즈가 달라져서 구분하지만 파이썬에서는 그냥 소수점을 인식하냐 아니냐 정도로 구분해도 무방합니다.

a = 10
a = int(10)

파이썬에서는 int() 함수로 사용합니다. a 라는 변수에 10을 저장하고, 이때 10을 정수(Integer) 로 사용한다는 의미입니다.

실수형 (Float)

쉽게 생각하면 소수점을 포함하는 숫자라고 생각하면 됩니다. 실수를 컴퓨터쪽에서 더 자세히 설명하기 위해서는 CPU, 메모리, 부동소수점 등의 개념까지 알면 좋은데 너무 초반에 이런 설명을 하기엔 난이도가 너무 올라가는 듯해서 간단하게 언급만 하고 넘어가겠습니다.

지금은 그냥 흘려들어도 되는 내용으로 “부동소수점(Floating Point)”이라는 개념이 있습니다. 이는 사람이 쓰는 숫자는 10진법이지만 컴퓨터는 2진법으로 숫자를 표현하기 때문에 생기는 개념인데요. 컴퓨터는 모든 신호를 0과 1로 표현하기 때문에 0.1, 2.1과 같은 소수점을 2진법으로 정확하게 나타낼 수가 없습니다.

263 -> 100000111
0.3 -> 0.01001100110011........ (무한 반복....)

즉 2진수로 표현하지 못하는 소수는 가장 근사치의 값으로 저장이 됩니다.

너무 자세한 설명은 이번 포스팅 주제에 벗어나는 것 같아서 이정도로 설명하고 별도로 포스팅을 남기도록 하겠습니다. 우리가 흔히 이야기하는 32비트, 64비트에 대한 차이가 이런 부분과 관련있다는 정도만 알고 넘어갑시다.

문자열 (String)

말 그대로 문자, 글자, 단어 등으로 구성된 형태를 지칭합니다.

"Words is string."
'abc'
"10"
'10.1'
"!@#"

이렇게 쌍따옴표(Double Quote) 혹은 홑따옴표(Single Quote) 로 둘러쌓인 값이 문자열입니다. 여기서 주의할 점은 숫자(정수,실수)도 따옴표로 감싸게되면 문자가 된다는 점입니다. 숫자일 때만 가능한 사칙연산(더하기,빼기,곱하기,나누기) 등이 문자열이 되면 불가능해집니다.

리스트 (List)

리스트는 데이터 혹은 값들의 집합이라고 할 수 있습니다. 흔히 배열(Array)라고 할 수도 있는데 언어마다 불리는 이름과 특징이 아주 조금씩 차이가 있습니다. 파이썬에서는 리스트(LIST)라고 부릅니다.

좀 쉽게 비유하자면 큰 가방에 이것저것 소지품을 담을 수 있습니다. 가방에 “옷”, “핸드폰”, “책” 을 넣을 수 있고, 심지어 작은 “가방” 도 넣을 수 있습니다. 이런 걸 코드로 표현해볼께요.

작은가방 = ["립스틱", "거울"]
큰가방 = ["옷", "핸드폰", "책", 작은가방, ...]
큰가방 = ["옷", "핸드폰", "책",  ["립스틱", "거울"] , ...]
singlelist = ["립스틱"]

이런 식으로 여러 종류의 값을 다 담을 수 있는 데이터의 형태입니다. 조금 설명을 더하자면 크기는 상관없지만 칸막이가 있는 가방이라고 비유하는게 더 정확할 것 같습니다. 리스트는 순서 혹은 Index 의 개념을 가지는 가방이기 때문입니다.

리스트 = [값1, 값2, 값3, ...]

이렇게 리스트를 만들때는 위의 표현식처럼 대괄호([])로 감싸주고 각 값들마다 쉼표로 구분해줍니다. 이 안에는 문자열, 숫자 등 가리지 않고 대부분의 자료형이 포함될 수 있습니다. 심지어 리스트 안에 리스트를 포함할 수도 있습니다.

튜플 (Tuple)

튜플은 리스트(List)와 거의 흡사한 데이터형태입니다., 몇가지 차이점이 있습니다.

  • 리스트는 [] (대괄호)로 감싸고, 튜플은 () (소괄호)로 감쌉니다.
  • 리스트는 내부에 값들을 추가하고 삭제, 수정이 가능하지만 튜플은 변경이 불가합니다.
tup1 = ("립스틱", "거울")
tup2 = (1, 2, 3)
tup3 = ("옷", "핸드폰", 1, 2, ("거울", "책"))
tup4 = 1, 2, 3
singletuple = ("립스틱",)

생김새는 리스트와 거의 비슷한데, 값이 1개만 있을때는 뒤에 쉼표(,)를 붙여야 된다는 점. 그리고 ()(소괄호)를 생략해도 되는 점입니다. 위에서 설명한 것처럼 값의 수정이 불가한 데이터형태라는 점에서 상수(Constant)처럼 값이 고정되는 곳에서 사용되는데, 실제로 개발할때는 값이 변경되는 경우가 많기 때문에 리스트를 더 많이 사용합니다. 뒤에 설명할 변수, 상수를 접하시면 어떤 식으로 사용되는지 감이 좀 올겁니다.

딕셔너리 (Dictionary)

딕셔너리는 단어 그대로 사전의 형태를 가지는 데이터 형태입니다. 사전이라고 하면 뜻을 알고싶은 단어를 찾으면 그에 맞는 설명이 나오죠. 개발언어에서의 딕셔너리는 어떠한 값을 지칭하는 이름이 있는 형태입니다. 아래 그림을 보면 더 이해하기 좋을 것 같습니다.

versionInfo = {
    "version" : "0.3.1",
    "os" : "android"
}

이번엔 중괄호가 나왔습니다. 위에서 대괄호와 소괄호를 보았는데, 중괄호는 이렇게 딕셔너리에서 사용합니다. versionInfo 라는 데이터는 version, os 라는 key를 가지고 있습니다. 그래서 키(Key)에 맞는 값을 가질수 있는 구조입니다. 이렇게 Key:Value 를 한 쌍으로 여러개의 데이터를 {}(중괄호) 안에 담을 수 있는 형태입니다.

많이 접하게 되는 JSON과 형태적으로 동일합니다.

데이터를 여러개 가질 수 있는 구조이지만 List와 다른 점은 List는 가지고 있는 데이터들의 순서(Index)가 있어서 그 순서를 기준으로 데이터를 가져오는 방식이라면, Dictionary는 순서가 없고 Key로만 데이터를 가져올 수 있다는 차이점이 있습니다. 그리고 Key는 고유(Unique)합니다. 같은 키를 사용하는 복수개의 데이터는 존재할 수 없다는 의미입니다.

불린 (Boolean)

컴퓨터는 모든 데이터를 0과 1로 이해하는데, 불린은 이에 딱 해당되는 데이터형태입니다. 참/거짓 으로만 값을 가지는 데이터입니다. Bool, Boolean 으로 불리는데 파이썬에서는 Boolean의 값으로 True, False 값을 가진다. 대소문자를 구분하니 주의합시다.

isExist = True
myTurn = False
isExist2 = "True"
myTurn2 = "False"

위의 코드처럼 따옴표 없이 True 라고 써도 에러가 나지 않습니다. 사전에 정의되어있는 예약어이기 때문입니다. 하지만 첫글자를 꼭 대문자로 써야 Boolean 으로 인식합니다.

이 Boolean 은 나중에 설명드릴 조건문(If, Else) 에서 등장합니다.

집합 (Set)

수학시간에 많이 접했던 집합과 같은 개념입니다. Set라고 부르는 이 자료형은 수학의 집합의 개념을 사용할 수 있는 데이터형태인데, 교집합, 합집합, 차집합을 처리할 수 있으며 몇가지 특징이 있습니다. 얼핏 보면 List와 비슷해보이기도 하는데 2가지 차이점이 있습니다.

  1. 중복을 허용하지 않음. (Unique)
  2. 순서가 없음 (No-Index)

이러한 특징 때문에 데이터를 통합할때 중복을 제거하기 위한 목적으로 많이 사용됩니다. List에서 중복을 체크하는 로직을 구현해서 처리할 수도 있지만 이러한 자료형의 특성을 잘 활용하면 시간이 단축되겠죠.

아래와 같이 set 키워드를 사용해서 생성할 수 있습니다. 괄호 안에 리스트(List)를 넣거나 문자를 넣을 수 있습니다.

set1 = set([1, 2, 3])
>>> {1, 2, 3}
set2 = set("Data")
>>> {"D","a","t"}

변수 (Variable)

위에서 살펴본 자료형은 어떠한 데이터(값)의 형태입니다. 이러한 데이터는 딕셔너리처럼 어딘가에 할당 혹은 저장을 해서 사용하게 됩니다. 정확히는 컴퓨터의 메모리 공간에 저장을 하고 그 위치를 지정한다고 볼 수 있습니다.

위에서 계속 변수라는 것을 사용하고 있었습니다.

a = 10
b = "abc"
c = [1, 2, 3]

이런 코드가 있을때 a, b, c 를 “변수“라고 합니다. 변수와 상반되는 개념으로는 상수 라는게 있습니다. 말그대로 값이 변할 수 있으면 변수(Variable), 변할 수 없다면 상수(Constant) 라고 합니다. 예를 들면 우리의 은행잔고는 계속 변하기 때문에 변수. 원주율(3.141592…..) 같은 값은 항상 같은 값이기 때문에 상수입니다.

{변수명} = {변수에 저장할 값}

파이썬의 특징이라면 변수명만 적어주면 입력된 값에 맞춰서 자동으로 자료형을 지정해준다는 점입니다. 파이썬으로 처음 개발을 접하는 분들은 이해가 안되실 수 있어서 다른 언어들을 예로 보여드리겠습니다.

#JAVA
int count = 0;
double weight = 60.1;
String b = "WORDS";

#C/C++
unsigned int count = 0;
float weight = 60.1f;
CString b = "WORDS";

#Objective-C
NSNumber *count = [NSNumber numberWithInt:0];
NSString *b = @"WORDS";

이런 식의 변수의 자료형을 선언하는 시점부터 정해줘야하는데, 파이썬이나 Javascript는 이런 부분에서 자유도가 높습니다. 그러다보니 숫자였다가 문자로 갑자기 형태가 바뀌는 것도 가능합니다.

변수명 생성규칙

  • 영문 문자와 숫자 사용가능
  • 대소문자 구분
  • 한글도 가능함. (추천하지 않음)

사용할 수 없는 변수명 규칙

  • 숫자로 시작하면 안된다.
  • 특수문자를 사용할 수 없다.
  • 띄어쓰기를 할 수 없다.
  • 사전정의된 예약어(내장 키워드)를 사용할 수 없다. (True, False, if, for … 등)

아주 기초적인 설명으로 변수와 자료형에 대해서 설명드렸습니다. 다음 포스팅에서는 각각의 자료형들을 어떻게 핸들링해야 되는지 알아보도록 하겠습니다.

파이썬(Python) 기초편 커리큘럼

  1. Python 시작하기: Python의 역사, 특징
  2. Python 설치: Python의 설치 방법
  3. 에디터 사용하기 (Visual Studio Code)
  4. 기본 문법: 변수, 자료형, 기본 연산자

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here