모든 언어를 배움에 있어서 가장 중요한 것은 처음에 배우는 것이라고 생각한다.
물론 모든 내용이 중요하지만, 초반이고 쉬운 내용이라고 대충 보고 넘겨버린다면
나중에 나를 힘들게 할 오류가 그 '초반의 쉬운 부분'을 제대로 몰라서 생길 수 있다.
그럼 기본 중의 기본!
**Data types(자료형)와 Operators(연산자)에 대해 알아보자!
Text Type: str
Numeric Types: int, float, complex
Boolean Type: bool
Sequence Types: list, tuple, range
Mapping Type: dict
Set Types: set, frozenset
Binary Types: bytes, bytearray, memoryview
None Type: None
Python에는 위와 같이 다양한 자료형이 있다.
Sequence, Mapping, Set, Binary Types들은 각각이 하나의 포스팅 주제가 될 정도의 내용이므로 차차 필요해질 때 다뤄보기로 하자.
고로, 이번 포스팅에선 파이썬 관련 책 첫 장에서 항상 다뤄지는 Text type, Numeric Types, Boolean Types, None Type에 대해 알아보겠다.
str
은 string 즉, 문자열을 나타내는 자료형이다.
큰따움표("") 안에 있는 글자들은 모두 string 이다.
# type() 함수: ()안의 content의 자료형 반환
type("Love your Enemies, for they tell you your Faults!")
<class 'str'>
type("100333300") # 숫자여도 ""로 묶인다면 str
<class 'str'>
Numeric Types는 말 그대로, 숫자를 나타내는 자료형으로 정수(int
), 부동소수점수(float
), 복소수(complex
)가 있다.
int
자료형은 integer 즉, 정수를 나타낸다.
>>> type(33578) # 정수
<class 'int'>
float
자료형은 floationg-point number 즉, 부동소수점수를 나타낸다.
부동소수점수는 단순히 소수점 이하를 표현할 수 있는 수라고 생각해도 무방하다.
>>> type(2.8) # 부동소수점수
<type 'float'>
complex
는 complex numbers 즉, 고등학교 때 배운 실수와 허수가 합해서 이루어진 복소수를 나타낸다.
>>> type(3+4j) # 복소수
<type 'complex'>
bool
은 boolean 즉, 참(True
)과 거짓(False
)을 나타낸다.
>>> type(False)
<class 'bool'>
>>> type(3 >= 1) # (3 >= 1)은 참이므로 True 반환
<class 'bool'>
>>> type(True == 'True') # True는 bool이지만 'True'는 str. type(True == 'True') -> type(False)
<class 'bool'>
Python에서 None
은 C 같은 다른 언어들에서 사용되는 Null
과 같은 의미이다.
즉, 값이 없는 상태를 나타낸다.
x = None
if x:
print("Do you think None is True?")
elif x is False:
print ("Do you think None is False?")
else:
print("None is not True, or False, None is just None...")
>>> None is not True, or False, None is just None...
x = None
print(x)
>>> None
# 빈 문자열, 빈 리스트, 빈 딕셔너리, 'None'과는 다르다.
None == '' # type: None == str -> False
>>> False
None == [] # type: None == list -> False
>>> False
None == 'None' # type: None == str -> False
>>> False
그렇다면 이런 None
은 언제 사용할까?
1. 값이 존재하지 않거나 알 수 없는 경우
2. 값이 '없음'일 경우
3. 값이 정의되지 않은 경우
산술 연산자: +
, -
, *
, /
, %
, **
, //
할당 연산자: =
, +=
, -=
, *=
, /=
, %=
,//=
, **=
/ &=
, |=
, ^=
, >>=
, <<=
비교 연산자: ==
, !=
, >
, <
, >=
, <=
논리 연산자: and
, or
, not
식별 연산자: is
, is not
멤버 연산자: in
, not in
비트 연산자: &
, |
, ^
, ~
, <<
, >>
print(5 + 3) >>> 8 # +: 덧셈
print(5 - 3) >>> 2 # -: 뺄셈
print(5 * 3) >>> 15 # *: 곱셈
print(3 * 2.0) >>> 6.0 # 결과가 정수여도 피연산자 중 실수가 있으므로 결과는 실수
print(4 / 2) >>> 2.0 # /: 나눗셈 <- 결과값은 항상 실수
print(5 % 3) >>> 2 # %: 나머지
print(5 ** 3) >>> 125 # **: 거듭제곱
print(5 // 3) >>> 1 # //: 몫
# /(나눗셈)을 제외하고, 다른 산술 연산자는 피연산자 중 하나 이상이 실수일 때만 결과값이 실수.
할당연산자는 모두 원리가 같으므로, 몇 개를 골라 설명하겠다.
x = 5 # 변수 x에 5 대입
x += 2 # (x += 2) == (x = x + 2)
x //= 2 # (x //= 2) == (x = x // 2)
x &= 2 # (x &= 2) == (x = x & 2)
x ^= 2 # (x ^= 2) == (x = x ^ 2)
x >>= 2 # (x >>= 2) == (x = x >> 2)
비교연산자는 모두 원리가 같으므로, 몇 개를 골라 설명하겠다.
True == 'True' # ==: 자료형과 값이 동일
>>> False
True != 'True' # !=: 자료형 혹은 값이 동일 X
>>> True
3 > 1 # >: 보다 크다
>>> True
2 <= 2 # <=: 작거나 같다
>>> True
x = 8
x < 5 and x < 10 # and 논리 연산자: 둘 다 참일 때만 참
>>> False # False and True == False
x < 5 or x < 10 # or 논리 연산자: 둘 중 하나만 참이어도 참
>>> True # False or True == True
not(x < 5) # not 논리 연산자: 참은 거짓으로, 거짓은 참으로 논리값을 뒤집음
>>> True # not False == True
식별 연산자는 값과 자료형뿐만 아니라, 실제로 동일한 개체이고 메모리 위치가 동일할 때 True를 반환한다.
a = 1000
b = 1000
a == b
>>> True # 값과 자료형 동일
a is b
>>> False # 메모리 위치가 다른 서로 다른 정수 객체
id(a), id(b) # id()함수: 객체의 고유 값 리턴
>>> (4399073552, 4399073584)
# 파이썬은 정수 256까지에 대해 이미 해당 값이 존재하면 기존의 객체에 할당(for 메모리 낭비 줄이기)
a = 3
b = 3
id(a), id(b)
>>> (4396325856, 4396325856)
a == b
>>> True
a is b # a와 b는 메모리 주소가 같은 정수 객체
>>> True
# a = 60, b = 13 이라 가정
# a = 0011 1100, b = 0000 1101
a & b # bit AND 연산(둘 다 참(1)일때만 참(1))
>>> 12 # 0000 1100
a | b # bit OR 연산
>>> 612 # 0011 1101
a ^ b # bit XOR 연산
>>> 492 # 0011 0001
~a # bit NOT 연산
>>> -612 # 1111 0000
a << 2 # bit 왼쪽 시프트 변산자(값만큼 왼쪽으로 비트 이동)
>>> 2402 # 0000 1111
W3 Schools - python operators
W3 Schools - python data types
Replit - [Pre-course] Python (by Wecode)
https://wikidocs.net/68
https://wikidocs.net/1161
https://www.w3schools.com/python/ref_keyword_none.asp
https://dojang.io/mod/page/view.php?id=2461