파이썬의 자료형 기초에 대해 배운 점들을 기록합니다. 이 글은 책
점프 투 파이썬
을 토대로 작성됐습니다.
파이썬3에서, 정수 타입의 데이터 값에는 크기 제한이 없다. 물론 개인 컴퓨터의 시스템 메모리의 용량만큼 제한받는다.
integer 정수의 타입은 파이썬에서 int
로 나타낸다.
my_int = 100
type(my_int) # <class 'int'>
파이썬이 int함수를 다루는 데엔 재밌는 부분이 있다. 파이썬은 사칙연산에서는 데이터 타입에 대해서 엄격하다가 int함수 안에 들어가게 되면 변환을 해준다. 그리고 오직 문자열만 변환을 해준다.
print(1 + "1")
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
literal_int = int("1")
print(literal_int) # 1
int([1])
# TypeError: int() argument must be a string or a number, not 'list'
소수점이 있을 때의 모든 숫자는 float
이다. float함수도 문자열에 대해서만 타입 변환을 해준다는 부분에서 int함수와 같다.
print(type(1.2)) # <class 'float'>
print(float("1.11")) # 1.11
float([1.11])
# TypeError: float() argument must be a string or a number, not 'list'
실수와 허수를 포함하고 있는 복소수를 의미한다. 파이썬에선 j
를 사용해서 허수를 표현한다.
1 + 3j
print(type(1j)) # <class 'complex'>
파이썬의 숫자형 연산자에는 사칙연산을 포함해서 제곱값을 돌려주는**
, 나눗셈 후의 나머지를 돌려주는 %
. 나눗셈 후 몫을 반환하는(정수 나누기) //
가 있다.
a = 10
b = 3
a + b # 13
a - b # 7
a * b # 30
a / b # 3.333333333333333
a ** b # 1000
a % b # 1
a % b # 3
값을 바꾸고 할당을 하는 과정을 짧게 쓸 수 있게 해주는 연산자가 있다.
a = 100
a += 10 # a = a + 10 과 같다.
print(a) # 110
a -= 1 # a = a - 1 과 같다.
print(a) # 109
a *= 3 # a = a * 3 과 같다.
print(a) # 327
a /= 10 # a = a / 10 과 같다.
print(a) # 32.7
a **= 2 # a = a ** 2과 같다.
print(a) # 1069.2900000000002
문자열이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다~
"Hello World"
문자열에서 작은 따옴표를 포함하고 싶다면, 큰 따옴표로 둘러싸면 된다.
" 'Hello' World"
'Hello World'
문자열에서 큰 따옴표를 포함하고 싶다면, 작은 따옴표로 둘러싸면 된다.
" 'Hello' World"
혹은 백슬래시를 이용해서 작은 따옴표와 큰 따옴표 모두를 자유롭게 표현할 수 있다.
" \" Python is fun!\" he says."
' \' Python is fun!\' he says.'
print("Hello \n\n\n World")
# Hello
#
#
# World
이스케이프 코드 \n
을 사용해서 줄을 바꿀 수 있다. 그러나 읽기에 불편하고 줄이 길어진다.
큰 따옴표 3개짜리 표현을 통해서, 쉽게 문장간의 간격을 표현할 수 있다.
print("""
Hello
World""")
# Hello
#
#
# World
head = "python"
tail = " is fun!"
head + tail
# "python is fun!"
head = "python"
head * 3 # "pythonpythonpython"
문자열의 길이는 len
함수를 이용해서 구할 수 있다. len
함수는 print
함수와 같이 파이썬의 기본 내장 함수로 별다른 설정 없이 바로 사용할 수 있다.
my_str = "python is fun!"
len(my_str) # 14
인덱싱(indexing)이란 무엇인가를 가리킨다는 의미이고, 슬라이싱은 무엇인가를 잘라낸다는 의미다.
my_str = "python is fun!"
my_str[0] # p
my_str[1] # y
my_str[-1] # !
인덱스에서 0부터 세는 것은 다른 일반적인 프로그래밍 언어와 같이 파이썬도 마찬가지다.
파이썬은 쉽게 문자열을 슬라이싱할 수 있도록 한다.
my_str = "python is fun!"
my_str[0:6] # python
my_str[0:] # python is fun!
my_str[:6] # python
my_str[:-1] # python is fun
my_str[:len(my_str)] # python is fun!
my_str[:] # python is fun!
문자열[시작 번호 : 끝 번호]
일 때 끝 번호에 해당하는 요소는 포함하지 않는다.
문자열 포매팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.
문자열 포맷 코드에는 숫자를 넣을 때 쓰는%d
와 문자열을 넣을 때 쓰는%s
가 있다. 둘 다 특정 변수의 값을 넣을 때 쓸 수 있다.
print("I eat %d apples." % 5) # I eat 5 apples.
name = "Eric"
age = 74
print("Hello, %s. You are %s." % (name, age))
# 'Hello Eric. You are 74.'
그러나 넣어야 할 값이 많아지고 문자열이 길어질수록 가독성이 떨어진다.
"Hello, {}. You are {}.".format(name, age)
'Hello, Eric. You are 74.'
str.format
을 쓰면 가독성이 더 높아지지만, 매개변수가 많아지고 문자열이 길어질 수록 가독성이 떨어지는 것은 마찬가지다.
f""포매팅은 str.format()
와 비슷하지만, 덜 모호하다.
name = "Eric"
age = 74
f"Hello, {name}. You are {age}."
# 'Hello, Eric. You are 74.'
또한 포매팅 안에서 연산자의 반환값 혹은 함수를 실행하고 받은 반환값을 문자열로 만들 수 있다.
name = "ERIC"
num = 100
print(f"{100 * 10}")
print(f"{name.lower()}")
여러줄을 표현하는 """
와 같이 쓰일 수도 있다.
불(bool) 자료형이란 참과 거짓을 나타내는 자료형이다.
자바스크립트와 달리 파이썬은 맨앞의 알파벳이 대문자다.
True
False
data에 참과 거짓이 있다는 것은 매우 중요한 특징이며 실제로도 자주 쓰인다.
string, list, tuple, dict 모두 그 안이 비어있는 경우 False
로 구분된다. 그 외의 경우는 모두 True
이다. 숫자의 경우에는 0이 아닌 모든 값은 True
이다. None
은 False
가 된다.
이는 list, tuple, dict를 순회해야 할 때 정말 유용하다.
my_list = [1,2,3,4]
while my_list:
my_list.pop()
print(my_list)
bool
함수를 사용해서 자료형의 참과 거짓을 식별할 수 있다.
empty_string = ""
my_list = [1,2,3]
bool(empty_string) # False
bool(my_list) # True