python 내장 함수


python의 내장함수(built-in functions)는 자주 사용되는 함수를 말한다

eval()

eval 함수는 매개변수로 받은 식을 문자열로 받아서 실행하는 함수이다.
즉, 매개변수로 받은 식은 실행 가능한 문자열로 들어와야 한다

a = '1 + 3 + 4 + 5'
eval(a)  # 13

a = '1 + 3 + '
eval(a)  # 


진수 변환 함수

  • oct()
    • 10진수 -> 8진수 문자열
        a = '10'
        oct(int(a))  # '0o12'
      
    • 8진수 -> 10진수
        a = '10'
        int(a, 8)
      
  • hex()
    • 10진수 -> 16진수 문자열
        a = '10'
        hex(int(a))  # '0xa'
      
    • 16진수 -> 10진수
        a = '10'
        int(a, 16)
      
  • bin()
    • 10진수 -> 2진수 문자열
        a = '10'
        bin(int(a))  # '0b1010'
      
    • 2진수 -> 10진수
        a = '10'
        int(a, 2)
      


sort()와 sorted()

  • sort() 함수는 리스트 객체 자체를 정렬해주는 함수이며 리스트에서만 사용이 가능하다
  • reverse옵션 : reverse옵션으로 오름차순, 내림차순 정렬을 해준다 (기본이 오름차순이다)
  • key옵션: 무엇을 기준으로 정렬하는지를 나타내는 키값이다
    li = [-1, 1 , -4, 22, -22]
    li.sort(reverse=True)  # 내림차순 정렬
    li.sort(lambda x: (abs(x-5), x-5)  # x-5를 한 값이 작은 순으로 정렬하고, 같은 경우에는 x-5의 값이 작은 순으로 정렬
    
  • ex) [‘api’, ‘app’, ‘aaa’, ‘demon’, ‘carrier’] 를 길이순으로 정렬하고, 사전순(오름차순)으로 정렬하기
li = ['api', 'carrier', 'app', 'aaa', 'demon']
li.sort(key=lambda x: (len(x), x))
  • sorted(): 정렬된 리스트를 새롭게 반환한다


dict.fromkeys()

딕셔너리 생성할 때 사용하는 메소드이며 seq, value 셋으로 사전을 생성한다

  • seq: 생성하려는 딕셔너리 키의 목록
  • value: 생성하려는 딕셔너리 값
seq = 'test'
dic1 = dict.fromkeys(seq)
print(dic1)  # {'t':None, 'e':None, 's':None, 't':None}

dic2 = dict.fromkeys(seq, 0)
print(dic1)  # {'t':0, 'e':0, 's':0, 't':0}


copy()와 deepcopy()

값을 복사하는 기능으로 얕은 복사와 깊은 복사 방식이 있다. 해당 함수를 사용할때는 mutable한 객체를 복사할 때 유의하면 된다

  • copy(): 얕은 복사
    • 객체를 복사할때 해당 객체만 복사하여 새 객체를 생성한다. 복사된 객체의 인스턴스 변수는 원본 객체의 인스턴스 변수와 같은 메모리 주소를 참조 하기 때문에 해당 메모리 주소의 값이 변경되면 원본 객체 및 복사 객체의 변인스턴스 수값은 같이 변경된다
      a = [[1, 2], 3]
      b = a  ## b = a.copy
    
      id(a)  # 4310711488
      id(b)  # 4310743808
    
      id(a[0])  # 4310761536
      id(b[0])  # 4310761536
    
  • deepcopy(): 깊은 복사
    • 객체를 복사할때 해당 객체와 인스턴스 변수까지 복사하는 방식이기 때문에 참조를 공유하지 않는다
      import copy
      a = [[1, 2], 3]
      b = copy.deepcopy(a)  ## b = a.copy
    
      id(a)  # 4307747120
      id(b)  # 4307747152
    
      id(a[0])  # 4307747056
      id(b[0])  # 4307747088
    



내장 함수 참고 docs