Python | 자료형과 연산자

happy tiger·2022년 6월 22일
1

Python

목록 보기
2/4
post-thumbnail

모든 언어를 배움에 있어서 가장 중요한 것은 처음에 배우는 것이라고 생각한다.
물론 모든 내용이 중요하지만, 초반이고 쉬운 내용이라고 대충 보고 넘겨버린다면
나중에 나를 힘들게 할 오류가 그 '초반의 쉬운 부분'을 제대로 몰라서 생길 수 있다.
그럼 기본 중의 기본!
**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에 대해 알아보겠다.


Text Type

str

str은 string 즉, 문자열을 나타내는 자료형이다.
큰따움표("") 안에 있는 글자들은 모두 string 이다.

# type() 함수: ()안의 content의 자료형 반환
type("Love your Enemies, for they tell you your Faults!")
<class 'str'>
type("100333300") # 숫자여도 ""로 묶인다면 str
<class 'str'>

Numeric Types

Numeric Types는 말 그대로, 숫자를 나타내는 자료형으로 정수(int), 부동소수점수(float), 복소수(complex)가 있다.

int

int자료형은 integer 즉, 정수를 나타낸다.

>>> type(33578)              # 정수
<class 'int'>

float

float자료형은 floationg-point number 즉, 부동소수점수를 나타낸다.
부동소수점수는 단순히 소수점 이하를 표현할 수 있는 수라고 생각해도 무방하다.

>>> type(2.8)                    # 부동소수점수
<type 'float'>

complex

complex는 complex numbers 즉, 고등학교 때 배운 실수와 허수가 합해서 이루어진 복소수를 나타낸다.

>>> type(3+4j)                   # 복소수
<type 'complex'>

Boolean Type

bool

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'>

None Type

None

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

profile
호기심·끈기·성장·발전·행복·협력 ٩(๑•̀ㅂ•́)و

0개의 댓글