- 파이썬에서는 크게 두 가지의 자료형 중에서 기본 자료형(Primitive Types)에 대해 설명
- 자료형에서 꼭 알아야 하는, 정수형, 실수형, 문자열형 및 불리언형 그리고 주석 문자 처리방법에 대해서 알아본다.
파이썬에서 자료형(Data type)은 지난 시간에 배웠던, 변수가 저장할 수 있는 값의 유형을 유형을 말하는 것으로, 파이썬은 다양한 기본 자료형을 제공하고 있으며, 각 자료형의 특성과 성질, 동작에 대해서 이번 시간에 이해하고, 익힐 수 있도록 한다.
파이썬은 크게 두 개의 자료형을 제공하고 있는데, 그중 한 개가 오늘 배우는 기본 자료형 (Primitive Types)이고, 또 하나는 컬렉션 자료형(Collection Type)라고 해서 리스트(List), 튜플(Tuple), 딕셔너리(dict), 집합(Set)으로 이루어진 여러 개의 데이터를 묶어서 저장할 수 있는 자료형이 있다.
컬렉션 자료형은 솔직히 정말 중요하지만, 아주 재미가 없는 관계로 조금 뒤쪽에서 다루도록 하고, 이번에는 우선 기본적인 코딩을 공부하기 위해서는 기본 자료형에 대해서 먼저 배워보도록 하자.
기본 자료형 (Primitive Types) 종류 및 적용 방법
파이썬의 기본 자료형은 프로그래밍에서 가장 기본적으로 사용되는 숫자, 문자열, 불리언(참, 거짓)과 같은 간단한 단일 데이터 유형을 말하는 것으로, 이러한 자료형 데이터는 많은 개발언어에서 자주 사용되고 있고, 다양한 연산과 함께 사용할 수 있는 중요한 요소이다.
정수형(integer, int)에 대한 이해
정수형(int
)은 `0`을 포함한 `음수`(-값)와 `양수`(+값)를 모두 포함하는 정수 값을 저장하는 자료형으로, 파이썬에서는 정수의 크기에 제한이 없어, 컴퓨터 메모리가 허용하는 한 매우 큰 숫자도 처리할 수 있다.
정수형이기 때문에 소수점은 포함할 수 없으며, 우리가 일반적으로 사용하는 10진수뿐만 아니라, 2진수, 8진수, 16진수 형태로도 사용할 수 있다.
※ 10진수만 가지고도 충분히 머리 아프니, 우선은 10진수만 사용하는 것으로 하고, 2진수, 8진수, 16진수는 넘어가서 아주 나중에 집중적으로 배우자.^^
정수형 적용 예시
int_1 = 15 # 정수형
int_2 = -20 # 음수 정수
int_3 = 0 # 0도 정수로 취급
binary = 0b1110 # 2진수 (10진수로 14)
hexadecimal = 0xFC # 16진수 (10진수로 252)
print(int_1)
print(int_2)
print(int_3)
print(binary)
print(hexadecimal)
15
-20
0
14
252
위와 같이 변수에 저장된 값들은 전부 정수형 자료로 되어 있으며, `양수`, `음수`, `0` 뿐만 아니라, 2진수 및 16진수 데이터도 포함할 수 있으며, 출력된 결과 값은 전부 10진수 값으로 나타나는 것을 확인할 수 있다.
이런 식으로, 직접 입력 또는 변수에 할당되는 값들은 전부 정수형 자료라고 생각하면 된다.
실수형(float)에 대한 이해
실수형(float
)은 소수점이 있는 수를 나타내는 자료형으로, 파이썬에서는 부동 소수점* 방식으로 실수를 처리하고, 기본적으로 실수의 유효 숫자는 소수점 이하 `18자리에서 반올림하여 17자리`까지 가능한 배정밀도(double percision)로 처리하고, 파이썬의 decimal
모듈을 사용하면 더욱 정밀한 실수 계산이 가능하다.
즉, 파이썬에서 실수 처리를 64비트로 실수를 표현하기 때문에, 더 높은 정밀도와 더 큰 범위를 지원하며, 과학적 표기법인 지수형태로 실수 값을 표현할 수 있고, 음수도 포함할 수 있다. 뭐, 이 정도만 이해해 두면 될 것 같다.ㅎㅎㅎ
부동 소수점(Floating Point) 이란?
소수점 위치가 고정되어 있지 않고, 자유롭게 이동할 수 있는 숫자 표현 방식을 뜻하는 것으로, 매우 큰 수나 매우 작은 수를 효율적으로 표현하고 계산할 수 있도록 하는 방식말한다.
실수를 과학적 표기법인 1.55e4
와 같은 지수로 표현할 수 있으며, 이는 1.55 x 10^4를 의미하고, 부동 소수점 표현의 기본 원리이다.
소수점 자릿수 파악하기
float_x = 0.12345678901234567890
print(float_x)
# 결과
0.12345678901234568
위와 같이 소수점이하 20자리인 실수 값을 출력하면 18자리에 있는 값이 반올림되어 17자리 까지 포시 되는 것을 확인할 수 있다.
실수형 적용 예시
pi = 3.14159 # 실수형
g = -9.81 # 음의 실수
exp = 1.55e4 # 과학적 표기법 (1.55 * 10^4 = 15500)
print(pi)
print(g)
print(exp)
3.14159
-9.81
15500.0
상기 실수형 적용 예시와 같이 다양한 실수를 사용할 수 있는 것을 확인할 수 있지만,
부동 소수점의 한계?
부동 소수점은 한 가지 치명적인 한계가 있다.
이것은 컴퓨터의 메모리 처리 방식과 부동 소수점의 정밀도가 제한되어 있어 근삿값을 표시하는 경우가 있고, 따라서 연산 과정에서 극 미세한 오차가 발생할 수 있다.
부동 소수점의 한계 예시 - 01
a = 0.1
b = 0.2
print(a + b) # 결과 값 : 0.30000000000000004
위와 같이 0.1과 0.2를 우리가 사용하는 계산기로 계산하면 0.3의 결과가 생기지만, 이것을 파이썬으로 계산하면 0.30000000000000004로 나타나는 오류 발생하는 것을 볼 수 있다.
부동 소수점의 한계 예시 - 02
a = 0.1
b = 0.2
print((a + b) == 0.3) # 결과 값 : False
위 코딩 내용을 a와 b를 더한 값을 0.3과 비교했을 때 같으면 참(True
), 다르면 거짓(False
)으로 표시하는 불리언(bool) 형 값으로 표시된다.
동일한 값을 위와 같이 코딩한다면, 우리가 생각하면 a + b
는 0.3
이기 때문에 True
를 표시해야 하지만, 결과는 False
로 결과를 출력하는 것을 볼 수 있다.
이는 해당 값이 변화 없이 계속적으로 유지된다면 큰 문제는 없겠지만, 오랜 시간 동안 누적되어야 하는 경우에는 시간이 지남에 따라서 오차가 점점 커지게 되는 경우가 발생하기 때문에 이러한 부동 소수점 근사 오류를 만들지 않도록 주의해야 한다.
특히나, 금융이나, 국방과학, 우주과학등 실수의 정밀도가 극히 중요한 분야 같은 경우는 이러한 오류는 치명적인 결과를 초래할 수 있다. 그래서 대부분의 개발자 분들은 오류를 줄이기 위해서 실수로 직접 계산하는 방법보다는 다른 방법으로 우회해서 코딩하는 경우가 많고, 파이썬 코딩 같은 경우는 round()
함수를 이용해서 특정 자릿수로 반올림시키거나 decimal
모듈을 이용해서 더 높은 정확도로 소수를 처리할 수 있다.
또는, 아래와 같이 애초에 실수로 계산하는 것이 아니라, 정수로 계산했다가, 최종적으로 실수로 변환해서 사용하는 편법(?) 방법(?)인 경우도 있다.
multip = 10 # 소수 1자리 일 때, 2자리면 100, 3자리면 1000 ~~~
a = 0.1 * multip
b = 0.2 * multip
print((a + b) / multip) # 결과 값 : 0.3
위 코딩의 결과 값은 정확하게 0.3
이다.
이 처럼, 소수점 자릿수만큼의 정수 값(10
)을 multip변수에 대입시켜 놓고, 각각의 실수 값에 정수 값을 곱해서 정수로 만든 다음, 최종적으로 소수점 자릿수를 가지고 있는 변수로 나눔으로써 최정적으로는 실수의 오류 없이 정상적으로 값이 출력되도록 할 수 있다. 이 방법으로 코딩하시는 분들도 많이 있는 것 같다.^^
위 방법은 소수 자릿수가 고정적인 경우에는 꽤 괜찮은 방법이지만, 유동적일 때는 위에 함수나 모듈을 이용해서 계산하는 것을 추천한다.^^
지금은 이러한 부분은 꼭 알아야 하는 것이 아니기 때문에, 이런 것이 있구나 하고 대략적으로 익혀두고 실제 프로젝트를 수행할 때 찾아보면 되는 부분이다.
문자열형(String, str)에 대한 이해
문자열형(str
)은 문자 또는 문자열을 나타내는 자료형으로, 문자열은 작은따옴표('
) 또는 큰 따옴표("
)로 묶어 표현하며, 파이썬의 문자열은 유니코드(Unicode)를 지원하고 있어 다양한 언어와 특수 문자를 유연하게 처리할 수 있다.
그리고, 문자열은 불편(immutable) 자료형으로, 한번 생성된 문자열은 변경할 수 없다. 즉, 이 말은 정수나 실수처럼 프로그램이 처리 중간에 변수에 대입된 문자열의 일부를 더하거나 빼낼 수 없다는 말이다.
문자열은 초기에는 대부분 print()
함수에 메시지를 출력하는 목적으로 사용하지만, 뒤로 가면 갈수록 다양한 곳에 문자열이 사용되고 있음으로, 다양하게 연습할 필요가 있다.
다양한 문자열 적용 예시
greeting = "안녕하세요! 반갑습니다." # 큰 따옴표로 문자열 선언
name = '돌출과 회전' # 작은 따옴표로 문자열 선언
multi_line = """한줄로 문자열을 표현하기
어려운 문자열 형태는 이렇게 연속된 따옴표 세개 안에
넣어면 가독성을 상당히 높일 수 있는 장점이 있다.""" # 여러 줄 문자열
num = "10" # 따옴표 안에 숫자도 문자로 지정
print(greeting)
print(name)
print(multi_line)
print(num)
안녕하세요! 반갑습니다.
돌출과 회전
한줄로 문자열을 표현하기
어려운 문자열 형태는 이렇게 연속된 따옴표 세개 안에
넣어면 가독성을 상당히 높일 수 있는 장점이 있다.
10
위 코딩 내용에서 모든 문자열은 따옴표 안에 포함된 모든 값은 전부 문자열로 변환되어 값을 출력한 내용이다.
특히, 실수나 정수도 따옴표 안에 있으면 문자열로 변환되어 값을 리턴한다.
따옴표 안에 따옴표 처리 방법
문자열 따옴표는 앞에서 언급한 것과 같이 "내용"
과 같은 큰 따옴표 사용과 '내용'
과 같은 작은따옴표를 혼용해서 사용할 수 있지만, 큰 따옴표 안에 또 다른 큰 따옴표는 사용할 수 없고, 마찬가지로 작은따옴표 안에 작은따옴표를 사용할 수 없다.
# 큰 따옴표 안에 큰 따옴표 사용
greeting = "안녕하세요! "돌출과 회전입니다." 반갑습니다." # 모두 큰 따옴표만 묶었을 경우
print(greeting)
# 작은 따옴표 안에 작은 따옴표 사용
greeting = '안녕하세요! '돌출과 회전입니다.' 반갑습니다.' # 모두 작은 따옴표만 묶었을 경우
print(greeting)
위와 같이 같은 따옴표로만 이루어진 문자열은 100% 구문의 끝이 필요하다며, SyntaxError: invalid syntax
에러 메시지를 표시할 것이다.
문자열 중간에 따옴표를 넣어야 하는 경우, "문자 1 '문자 2' 문자 3"
또는 '문자 1 "문자 2" 문자 3'
식으로 큰 따옴표로 범위가 만들어졌다면, 작은따옴표를 사용하고, 반대로 작은따옴표로 범위가 만들어졌다면 큰 따옴표로 입력해야 한다.
# 큰 따옴표안에 작은 따옴표로 묶음
greeting1 = "안녕하세요! '돌출과 회전입니다.' 반갑습니다."
# 작은 따옴표안에 큰 따옴표로 묶음
greeting2 = '안녕하세요! "돌출과 회전입니다." 반갑습니다.'
print(greeting1)
print(greeting2)
안녕하세요! '돌출과 회전입니다.' 반갑습니다.
안녕하세요! "돌출과 회전입니다." 반갑습니다.
위와 같은 형태로 따옴표 안에 따옴표를 표시해야 한다. 물론 나중에는 다른 방법으로도 처리하는 방법이 있지만, 우선은 이렇게 따옴표를 처리하면 된다.
불리언형(Boolean, bool)에 대한 이해
불리언형(bool
)은 파이썬에서 참(True
) 또는 거짓(False
)으로만 나타내는 자료형이다. 불리언형은 앞으로 조건문이나 논리 연산과 비교 연산에서 사용되며, 프로그램의 흐름을 제어하거나, 다양한 연산에서 매우 중요한 역할을 수행한다.
불리언 값으로 사용 예시
val_1 = True
val_2 = False
앞에서 언급했듯이 불리언형은 True
와 False
두 가지 값만을 가지고 있으며, 이 두 값은 파이썬의 예약어로 첫 글자는 대문자로 써야 하며, Flase
는 1
로, False
는 0
으로 간주되어 앞으로 수학(산수) 연산에서도 사용할 수 있다.
또한, 불리언형은 다른 자료형과도 사용할 수 있다. 예를 들어 값이 없는 빈 문자열이나 0은 Flase
로 출력하고, 그 외의 값은 True
로 출력된다.
비교 연산으로 불리언 값을 반환하는 예시
val_1 = 10
val_2 = 5
print(val_1 > val_2) # True 출력
print(val_1 == val_2) # False 출력
True
False
위의 활용예제는 val_1
변수와 val_2
에 대입된 값을 비교 연산자를 이용해서 True
와 Flase
를 반환하는 내용으로, print(val_1 > val_2)
는 val_2보다 val_1이 작으니까 True
(참)을 반환하고, print(val_1 == val_2)
는 두 값이 같지 않기 때문에 Flase
로 반환한다는 불리언 자료형의 대표적인 사용방법이다.
값의 유무로 불리언 값을 반환하는 예시
val_1 = 0
val_2 = 1234
val_3 = ""
val_4 = "bool"
print(bool(val_1)) # False
print(bool(val_2)) # True
print(bool(val_3)) # False
print(bool(val_4)) # True
False
True
False
True
위 코드는 파이선에서 블리언 값으로 반환하도록 하는 코딩으로, 숫자 0
, 빈 문자열 " "
등 자료의 값이 없거나 비어있는 경우에는 False
로 반환하고, 그 외 값이 존재하면 True
로 반환하는 것으로, 나중에 값의 존재 여부를 판단할 때 유용하게 사용할 수 있다.
불리언 자료형은 직접적으로 눈에 보이는 자료형은 아니지만, 조건문, 비교문 등에서는 정말 많이 사용되고 있는 자료형 개념으로 꼭 알아두어야 하는 자료형이고, 참과 거짓으로 반환(리턴)되는 값은 전부 불리언(bool
) 값이라고 생각하면 된다.
주석(comment) 문자 처리
주석은 코드의 실행에 영향을 미치지 않고, 코드에 대한 설명이나 메모를 추가할 때 사용하는 기능으로, 코드를 이해하기 쉽게 만들고, 협업 시 다른 개발자가 코드의 목적과 동작을 쉽게 파악할 수 있도록 해준다.
한 줄 주석 처리 방법
파이썬에서 주석은 한 줄 주석과 여러 줄 주석으로 나누어 있고, 한 줄 주석은 #
기호로 시작하며, #
뒤에 작성된 내용이 주석으로 처리되며, 파이썬 인터프리터가 무시하고, 코드에 포함하지 않는다.
# 이것은 한 줄 주석이다.
a = 10 # 변수 a에 10을 할당
위와 같이 # 뒤에 작성된 문자는 전부 주석으로 간주한다.
여러 줄 주석 처리 방법
파이선은 여러 줄 주석을 위한 구문은 없지만, 여러 줄을 주석 처리해야 할 때는 주석으로 처리할 각각의 줄에 #
기호를 붙이는 방법을 사용한다.
# 이것은 한 줄 주석이다.
# 변수 a에 10을 할당
# 이렇게 여러 줄을 주석으로 처리할 수 있다.
a = 10
여러 줄 주석을 위한 문자열 리터럴(String Literal)을 이용한 방법
파이썬에서 여러 줄 주석을 처리하기 위해서 #기호를 이용할 수 있지만, 문자열 리터럴( 큰 따옴표 3개 도는 작은따옴표 3개로 묶인 문자열, 문자열 시작과 끝에 """
또는 '''
으로 처리)을 여러 줄 주석처럼 사용할 수 있다.
실제로는 문자열이지만, 특정한 위치에 사용하지 않으면 코드가 실행 중에 인식하지 않아 주석처럼 동작할 수 있으나, 공식적인 주석 처리 방법이 아니기 때문에, 대부분은 설명서와 같은 문서화를 목적으로 사용한다.
"""
이 코드는 파이썬이 여러 줄 주석 처리로
인식 시키기 위해서 사용하는 방법을
예시로 보여 준다.
"""
print("이 코드는 실행 됩니다.")
위처럼 여러 줄을 주석으로 처리할 수 있지만, 대부분은 코드를 시작하기 전에 전체적인 코딩한 프로그램의 간략한 설명문정도를 입력해서 사용하면 편리하다.
주석을 사용해야 하는 이유
주석을 잘 활용하면 코드의 가독성을 높이고, 유지보수 작업을 수월하게 할 수 있으며, 코드의 목적 및 문법을 이해하기 위해서 적절하게 사용하는 것을 적극 추천한다.
- 코드 설명 : 복잡하거나 논리적인 코드는 주석을 통해 설명하는 것이 좋으며, 해당 코드 블록이 하는 일이나 목적등을 주석으로 작성해 두면 나중에라도 이해하고 찾기가 쉽다.
- 의도 전달 : 왜 이렇게 코딩했는지, 특정 코드가 어떤 기능을 하는지 설명하는 데 사용한다.
- 임시 코드 비활성 : 코드를 잠시 비활성하거나 데스트 할 때 주석으로 코드를 일시적으로 비활성시킬 수 있으며, 코드를 수정할 때 원본을 복사해서 수정할 때, 원본을 주석 처리해 놓고 수정하면 실수를 방지하거나, 수정상태를 파악하기가 수월하다.
- 공부할 때 : 공부할 때도 적절하게 주석을 잘 이용하면 훨씬 수월하게 코딩 공부를 할 수 있고, 이해도 수월하다.
오늘은 코딩의 기본이 되고 많이 사용하는 정수형, 실수형 문자열형에 대한 기본 자료형에 대한 내용을 공부했고, 코딩하면 적절한 설명을 위해 주석 사용하는 방법을 익혔다.
특별히 외울 필요는 없지만, 입력되고 있는 자료가 정수인지, 실수인지, 문자인지는 구분할 수 있어야 나중에 자료형식으로 고생하는 일이 적어진다.
우리 같이 열심히 공부해 봅시다.
죽이 되는 것보다 밥이 되는 것을 목표로~~^^
위 내용은 공부하면서 이해한 내용과 단편적인 검색 지식으로 작성된 내용으로 글에 오류가 있을 수 있으며,
오류나 잘못된 정보가 있으면 언제든지 댓글 주시면 최대한 반영/수정하겠습니다.