[Python] 자료형의 형 변환(Type Conversion / Type Casting)

Sam Kim·2022년 6월 20일
0

Python

목록 보기
4/4

형 변환의 특징을 출력 예시를 통해 알아봅니다.

  • 자료형(Data Type)을 다른 형태(Type)로 변환하는 것.

  • 파이썬에서 제공하는 함수를 이용하여 자료형 변환이 가능.

  • 연산이나 메모리 사용의 효율을 위해 형 변환을 활용.

문자(열)형으로 형 변환

변환 함수: str()

  • 보이는 그대로 문자(열)형(str)으로 변환.

문자(열)형으로 형 변환에 따른 출력 결과

[예시1] int to str

  • [입력]
a = 123
b = str(a)

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)))
  • [출력]
a의 출력 결과: 123 / a의 자료형: <class 'int'>
b의 출력 결과: 123 / b의 자료형: <class 'str'>

\\

[예시2] float to str

  • [입력]
c = 1.23
d = str(c)

print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)))
  • [출력]
c의 출력 결과: 1.23 / c의 자료형: <class 'float'>
d의 출력 결과: 1.23 / d의 자료형: <class 'str'>

\\

[예시3] bool to str

  • [입력]
e = True
f = str(e)

print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)))
  • [출력]
e의 출력 결과: True / e의 자료형: <class 'bool'>
f의 출력 결과: True / f의 자료형: <class 'str'>

정수형으로 형 변환

변환 함수: int()

  • int의 형태를 가진 strint로 변환 가능.
  • floatint로 변환 가능. 단, 소수점 이하는 버림.
  • 숫자가 아닌 문자열(str)은 정수형(int)으로 변환 불가.
  • str의 경우 "11.00"처럼 float형태의 텍스트는 int로 변환 불가.
  • bool의 형태는 int로 변환 가능.
    • True 값은 숫자 1로 변환.
    • False 값은 숫자 0으로 변환.

정수형으로 형 변환에 따른 출력 결과

[예시4] str to int

  • [입력]
a = "11"
b = int(a)  # int의 형태를 가진 str은 int로 변환 가능

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)))
  • [출력]
a의 출력 결과: 11 / a의 자료형: <class 'str'>
b의 출력 결과: 11 / b의 자료형: <class 'int'>

\\

[예시5] float to int

  • [입력]
c = 11.99    # float은 int로 변환 가능. 단, 소수점 이하는 버림
d = int(c)

print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)))
  • [출력]
c의 출력 결과: 11.99 / c의 자료형: <class 'float'>
d의 출력 결과: 11 / d의 자료형: <class 'int'>

\\

[예시5] bool to int

  • [입력]
e = True    # True의 값은 숫자 "1"과 동일
f = int(e)  # bool의 형태는 int로 변환 가능

g = False   # False의 값은 숫자 "0"과 동일
h = int(g)  # bool의 형태는 int로 변환 가능

print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)),"\n")

print("g의 출력 결과: {} / g의 자료형: {}".format(g, type(g)))
print("h의 출력 결과: {} / h의 자료형: {}".format(h, type(h)))
  • [출력]
e의 출력 결과: True / e의 자료형: <class 'bool'>
f의 출력 결과: 1 / f의 자료형: <class 'int'>

g의 출력 결과: False / g의 자료형: <class 'bool'>
h의 출력 결과: 0 / h의 자료형: <class 'int'>

실수형으로 형 변환

변환 함수: float()

  • 숫자 형태를 가진 strfloat으로 변환 가능.
  • 숫자가 아닌 문자열(str)은 실수형(float)으로 변환 불가.
  • intfloat으로 변환 가능
  • float은 항상 소수점 이하 자리를 표기
  • bool의 형태는 float로 변환 가능.
    • True 값은 숫자 1.0로 변환.
    • False 값은 숫자 0.0으로 변환.

실수형으로 형 변환에 따른 출력 결과

[예시6] str to float

  • [입력]
a = "11"
b = float(a)  # 숫자 형태를 가진 str은 float으로 변환 가능

c = "22.00"   
d = float(c)  # 숫자 형태를 가진 str은 float으로 변환 가능

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)),"\n")

print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)))
  • [출력]
a의 출력 결과: 11 / a의 자료형: <class 'str'>
b의 출력 결과: 11.0 / b의 자료형: <class 'float'>

c의 출력 결과: 22.00 / c의 자료형: <class 'str'>
d의 출력 결과: 22.0 / d의 자료형: <class 'float'>

\\

[예시7] int to float

  • [입력]
e = 33
f = float(e)  # int는 float으로 변환 가능  

print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)))
  • [출력]
e의 출력 결과: 33 / e의 자료형: <class 'int'>
f의 출력 결과: 33.0 / f의 자료형: <class 'float'>

\\

[예시8] bool to float

  • [입력]
g = True      # True의 값은 숫자 "1"과 동일
h = float(g)  # bool의 형태는 float으로 변환 가능

i = False     # False의 값은 숫자 "0"과 동일
j = float(i)  # bool의 형태는 float으로 변환 가능

print("g의 출력 결과: {} / g의 자료형: {}".format(g, type(g)))
print("h의 출력 결과: {} / h의 자료형: {}".format(h, type(h)),"\n")

print("i의 출력 결과: {} / i의 자료형: {}".format(i, type(i)))
print("j의 출력 결과: {} / j의 자료형: {}".format(j, type(j)))
  • [출력]
g의 출력 결과: True / g의 자료형: <class 'bool'>
h의 출력 결과: 1.0 / h의 자료형: <class 'float'>

i의 출력 결과: False / i의 자료형: <class 'bool'>
j의 출력 결과: 0.0 / j의 자료형: <class 'float'>

논리형으로 형 변환

변환 함수: bool()

  • 모든 자료형은 bool로 변환 가능.
  • True or False를 규정하는 것은 데이터의 유(有) or 무(無).
    • 숫자 0의 경우 False로 변환.
    • 0이 아닌 숫자는 True로 변환.
    • 아무것도 없이 비어있는 str("")은 False로 변환.
    • 공백문자는 공백이 있는 str(" ")이므로 True로 변환.
    • 문자의 내용이 "False"str 역시 "False"라는 데이터를 가지고 있으므로 True로 변환.

[예시9] int to bool

  • [입력]
a = 0       # int는 bool로 변환 가능
b = bool(a) # 숫자 0의 경우 False로 변환

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)))
  • [출력]
a의 출력 결과: 0 / a의 자료형: <class 'int'>
b의 출력 결과: False / b의 자료형: <class 'bool'>

\\

[예시10] float to bool

  • [입력]
c = 0.2     # float은 bool로 변환 가능
d = bool(c) # 0이 아닌 숫자는 True로 변환

print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)))
  • [출력]
c의 출력 결과: 0.2 / c의 자료형: <class 'float'>
d의 출력 결과: True / d의 자료형: <class 'bool'>

\\

[예시11] str to bool

  • [입력]
e = ""
f = bool(e) # 아무것도 없는 str은 False로 변환

g = "False" # 내용에 상관없이 문자열이 있는 것으로 간주
h = bool(g) # 내용이 있는 str은 True로 변환

i = "0"     # str은 숫자가 아니므로 문자열이 있는 것으로 간주
j = bool(i) # 내용이 있는 str은 True로 변환

k = " "     # 공백문자(띄어쓰기 등) 역시 문자열이 있는 것으로 간주
l = bool(k) # 내용이 있는 str은 True로 변환

print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)),"\n")

print("g의 출력 결과: {} / g의 자료형: {}".format(g, type(g)))
print("h의 출력 결과: {} / h의 자료형: {}".format(h, type(h)),"\n")

print("i의 출력 결과: {} / i의 자료형: {}".format(i, type(i)))
print("j의 출력 결과: {} / j의 자료형: {}".format(j, type(j)),"\n")

print("k의 출력 결과: {} / k의 자료형: {}".format(k, type(k)))
print("l의 출력 결과: {} / l의 자료형: {}".format(l, type(l)))
  • [출력]
e의 출력 결과: / e의 자료형: <class 'str'>
f의 출력 결과: False / f의 자료형: <class 'bool'>

g의 출력 결과: False / g의 자료형: <class 'str'>
h의 출력 결과: True / h의 자료형: <class 'bool'>

i의 출력 결과: 0 / i의 자료형: <class 'str'>
j의 출력 결과: True / j의 자료형: <class 'bool'>

k의 출력 결과: / k의 자료형: <class 'str'>
l의 출력 결과: True / l의 자료형: <class 'bool'>

Appendix

  • 형 변환을 영문 표기로 type conversion, type casting 외에도 type coercion, type juggling이라고도 하는 것 같다. 혹시 외국인과 협업하게 될 수도 있으니 참고로 알아두자. [출처: 위키백과 "형 변환"]

0개의 댓글