본문 바로가기
Python/파이썬 기초

자료형과 관련된 내장함수 - 파이썬 기초(9)

by 콩돌 2018. 12. 2.
반응형


참고 자료

https://docs.python.org/3/library/functions.html



파이썬 버전 3.7 기준



자료형과 관련된 내장함수


본 포스팅에서 다루는 함수는 다음과 같다.

bool(), int(), float(),  complex(), list(), tuple(), range(), dict(), set(), frozenset(), str(), type() 등.



단일값을 가지는 자료형에 대한 내장함수


bool(x)

  ○ 논리값, True(참)나 False(거짓)중 하나를 반환한다. 

  ○ x가 거짓이거나 생략되면 False을 반환한다. 

  ○ x에는 대부분의 자료형(리스트,튜플,딕셔너리 포함)이 입력될 수 있다.

  ○ 이상한 얘기겠지만 각 값에 대해 참값과 거짓값이 존재한다.

    ▷ 예를들어, 정수형에서 0은 거짓(False)이고, 1은 참(True)이다. 또한, 0이 아닌 다른 값은 참 값을 가진다. 실수형에서도 마찬가지다. 

    ▷ 빈 리스트나 튜플, 딕셔너리은 거짓값을 가지지만, 값이 하나라도 존재하면 참값을 가진다.


int(x, base=10)

  ○ 입력된 객체를 정수 객체로 변환하여 반환한다.

  ○ 숫자형 뿐만이 아니라 문자열, bytes형, bytearray형도 입력이 가능하나, 문자열이 숫자로 구성되어있으면 변환이 가능하다.

  ○ 실수형이 입력될 경우 소수점은 버리고, 정수 객체를 반환한다.

  ○ 기본적으로 문자열형이 x에 숫자로 구성된 문자열형(10진수 이하일 경우이며, 16진수는 a~f까지 입력가능하다.)이 입력될 경우 십진형태로 인식 하지만(base=10 이 기본값), base값을 변경함으로써 다른 진수로 입력을 변경할 수 있다. 하지만 출력은 10진수이다.


float(x)

  ○ 입력된 객체를 실수 객체로 변환하여 반환한다.

  ○ 입력되는 객체에 숫자형 뿐만이 아니라 입력되는 객체에 문자열형도 가능하다.

    ▷ 문자열형일 경우조건이 까다로워지는데, 부호입력은 가능하나, 부호 뒤쪽 숫자와의 공백이 들어갈 경우 에러가 발생한다.

    ▷ "Infinity" 혹은 "inf" 문자열로 무한대를 표현할 수 있다.(대소문자는 중요하지 않고, 음의 무한대일경우 -를 붙이면된다.)

    ▷ "nan"을 통해 nan객체를 표현할 수 있다.(대소문자는 중요하지 않다.)

    ▷ 과학적표기법 혹은 공학적표기법을 사용할 경우 역시 float으로 표현이 가능하다.


사용 예)

In[71]: float(1)

Out[71]: 1.0

In[72]: float('120')

Out[72]: 120.0

In[73]: float('1e6')

Out[73]: 1000000.0

In[74]: float('inf')

Out[74]: inf

In[75]: float('nan')

Out[75]: nan



complex([real[, imag]])

  ○ real + imag*1j 값을 가진 복소수를 반환하거나, 문자열 또는 숫자를 복소수로 변환한다. 

  ○ 문자열을 입력할 경우 첫번째 real인자만 입력하여야 하고, 두번째 imag을 입력을 하면 안된다.

  ○ 숫자를 입력할 경우는 둘다 입력해도 가능하다.

    ▷ imag을 입력하지 않을시 기본 값은 0이다.

    ▷ real까지 입력하지 않은 경우 0j를 반환한다.


사용 예)

In[30]: complex()

Out[30]: 0j

In[31]: complex(1)

Out[31]: (1+0j)

In[32]: complex(1,2)

Out[32]: (1+2j)

In[33]: complex('1+1j')

Out[33]: (1+1j)

In[34]: complex('1')

Out[34]: (1+0j)



시퀀스형 및 매핑형 자료형에 대한 내장함수


※ 이터레이블(iterable)?

  ○ 먼저 쉽게 설명하면 리스트와 튜플과 같은 시퀀스형 자료형 대부분은 이터레이블하다.

  ○ 자료형이 아니라도 이터레이블한 경우가 있지만 이터레이블에 대한 자세한 설명은 여기를 참고한다.


list([iterable])

  ○ 입력 객체들을 가변형 시퀀스형인 리스트로 출력한다.

  ○ 리스트에 대한 자세한 내용은 여기를 참고한다.


tuple([iterable])

  ○ 입력 객체들을 불변형 시퀀스형인 튜플로 출력한다.

  ○ 튜플에 대한 자세한 내용은 여기를 참고한다.


range([start,] stop[, step])

  ○ 기본적으로 정수입력만 받으며, start부터 stop까지 step으로 형성된 레인지형 자료형을 출력한다.

  ○ stepd의 기본값은 1이며, start의 기본값은 0이다.

  ○ 즉, range 입력에 1개의 정수만 들어갈 경우 0부터 입력된 변수까지 1씩 증가시킨 레인지형 자료형이 생성된다.

  ○ 레인지와 관련된 자세한 내용은 여기를 참고한다.

dict()

  ○ 입력 객체쌍을 딕셔너리를 출력한다.

  ○ 딕셔너리에 대한 자세한 내용은 여기를 참고한다.


set([iterable])

  ○ 입력 객체를 가변형 집합 객체로 출력한다.

    ▷ 리스트, 튜플과 같은 iterable객체를 입력으로 받는다.

  ○ 이 자료형과 관련된 자세한 내용은 여기를 참고한다.


frozenset([iterable])

  ○ 입력 객체를 불변형 집합 객체로 출력한다.

    ▷ 리스트, 튜플과 같은 iterable객체를 입력으로 받는다.

  ○ 이 자료형과 관련된 자세한 내용은 여기를 참고한다.


str(object='' ) or str(object=b'' , encoding=''utf-8, error='strict'

  ○ 입력 객체를 불변형 문자열 객체로 출력한다.

    ▷ 숫자형이나 리스트, 튜플등 다양한 객체를 입력으로 받을 수 있으나 입력으로 받은 객체를 그대로 문자열로 출력한다.

  ○ 문자열과 관련된 자세한 내용은 여기를 참고한다.


사용 예)
In[64]: str('1,2,3')
Out[64]: '1,2,3'
In[65]: str([1,2,3])
Out[65]: '[1, 2, 3]'
In[66]: str(156)
Out[66]: '156'
In[67]: str((1,2,3))
Out[67]: '(1, 2, 3)'
In[68]: str({'a': 1, 'b': 2})
Out[68]: "{'a': 1, 'b': 2}"


기타 자료형과 관련된 내장함수


type(x) or type(name, bases,dict)

  ○ 입력되는 x의 자료형을 반환한다.

  ○ x.__class__가 반환하는 것과 같은 객체이다.

  ○ 실제 객체를 자료형을 알기 위해서는 isinstance() 내장 함수가 권장되는데, 이 함수는 서브클래스를 고려하기 때문이다.


  ○ 세 개의 인자가 입력으로 들어가면, 새로운 타입의 객체를 반환한다.

    ▷ 이 것은 본래 class구문의 동적인 형태라고 볼 수 있다.

    ▷ 다음 예제 구문에서 봤을 때 class 구문으로 작성된 X와 type 구문으로 작성된 G는 거의 동일하다고 볼 수 있다.

    ▷ name 값은 클래스 이름이며 __name__ 어트리뷰트에 대응되고, bases 튜플은 베이스 클래스들을 항목화하며 __bases__ 어트리뷰트가 되고, dict 딕셔너리는 클래스 바디의 정의들이 들어있는 이름 공간이며 __dict__ 어트리뷰트가 되도록 표준 딕셔너리에 복사된다. 


# 객체의 자료형 확인

In[2]: type(1)

Out[2]: int

In[3]: type('1')

Out[3]: str

In[4]: type(1.0)

Out[4]: float

# type 객체를 생성하는 법

In[5]: class X:

...    a = 1

...    

In[6]: G = type('G', (object,), dict(a=1))


bytearray(x)

  ○ 입력 객체의 바이트 배열을 반환한다.(가변형)

bytes(x)
  ○ 입력 객체의 바이트 객체를 반환한다.(불변형)

iter(x)
  ○ 이터레이터 객체를 반환한다. 


반응형

댓글