Skip to content

2.16. 내용정리: 16일차

흔한 찐따 edited this page Mar 25, 2022 · 2 revisions

내장 함수 (Built-in Functions)

  • 프로그래밍에서 내장 함수에 대한 이야기할 때 내장 되어있다는 뜻의 built-in 이라는 표현을 자주 사용한다.
  • 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 타입(type)을 사용할 수 있는 함수들이 내장되어 있다.
  • 대표적으로, print , del , type , list 등이 바로 내장 함수이다.
  • 이러한 파이썬 내장 함수는 외부 모듈과 달리 import 가 필요하지 않기 때문에 아무런 설정 없이 바로 사용할 수 있다.
  • 공식 문서의 파이썬 내장 함수를 참고하면 더 자세한 정보를 확인할 수 있다.

abs

abs(x) 는 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 반환하는 함수이다.

# '3'이 출력된다.
a = abs(3)
print(a)

# '3'이 출력된다.
b = abs(-3)
print(b)

# '1.2'가 출력된다.
c = abs(-1.2)
print(c)

all

  • all(x) 는 반복 가능한(iterable) 자료형 x 를 입력 인수로 받으며 이 x 의 요소가 모두 참이면 True , 거짓이 하나라도 있으면 False 를 반환한다.
    • 반복 가능한 자료형이란 for 문으로 그 값을 출력할 수 있는 것을 의미한다.
    • 대표적으로, 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다.
  • 만약 all 의 입력 인수가 빈 값인 경우에는 True 를 리턴한다.
# 리스트 자료형 '[1, 2, 3]'은 모든 요소가 참이므로 'True'를 반환한다.
a = all([1, 2, 3])
print(a)

# 리스트 자료형 '[1, 2, 3, 0]' 중에서 요소 '0'은 거짓이므로 'False'를 반환한다.
b = all([1, 2, 3, 0])
print(b)

# 빈 값은 `True` 를 리턴한다.
c = all([])
print(c)

any

  • any(x) 는 반복 가능한(iterable) 자료형 x 를 입력 인수로 받으며 이 x 의 요소 중 하나라도 참이 있으면 True , x 가 모두 거짓일 때에만 False 를 반환한다.
  • 즉, all(x) 의 반대이다.
# 리스트 자료형 '[1, 2, 3, 0]' 중에서 '1', '2', '3'이 참이므로 'True'를 반환한다.
a = any([1, 2, 3, 0])
print(a)

# 리스트 자료형 '[0, '']'의 요소 '0'과 ''은 모두 거짓이므로 'False'를 반환한다.
b = any([0, ''])
print(b)

# 만약 any의 입력 인수가 빈 값인 경우에는 'False'를 리턴한다.
c = any([])
print(c)

chr

  • chr(i) 는 유니코드(Unicode) 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다.
  • 유니코드란, 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.
a = chr(97)
# 'a'가 출력된다.
print(a)

# '가'가 출력된다.
b = chr(44032)
print(b)

dir

  • dir 은 객체가 자체적으로 가지고 있는 변수(속성)나 함수(메서드)를 보여 준다.
  • 결과는 리스트로 반환된다.
# ['append', 'count', 'extend', 'index', 'insert', 'pop', ...]
print(dir([1, 2, 3]))

# ['clear', 'copy', 'get', 'has_key', 'items', 'keys', ...]
print(dir({ '1': 'a' }))

divmod

  • divmod(a, b) 는 2개의 숫자를 입력으로 받는다.
  • 그리고 ab 로 나눈 몫과 나머지를 튜플 형태로 반환하는 함수이다.
  • 몫을 구하는 연산자 // 와 나머지를 구하는 연산자 % 를 각각 사용한 결과와 동일하다.
# '(2, 1)'이 출력된다.
a = divmod(7, 3)
print(b)

# '2'가 출력된다.
b = 7 // 3
print(b)

# '1'이 출력된다.
c = 7 % 3
print(c)

enumerate

  • enumerate 는 사전적인 의미로 "열거하다"라는 의미이다.
  • enumerate 함수는 순서가 있는 자료형( list , tuple , str )을 입력으로 받아 인덱스(index) 값을 포함하는 enumerate 객체를 반환한다.
  • 주로 enumerate 함수는 for 문과 함께 자주 사용한다.
for i, element in enumerate(['a', 'b', 'c']):
    print(i, element)

eval

  • eval(expression) 은 실행 가능한 문자열( 1 + 2 , 'hi' + 'a' 등)을 입력으로 받아 문자열을 실행한 결과값을 반환하는 함수이다.
  • 주로 eval 은 입력받은 문자열로 파이썬 함수나 클래스를 동적(dynamic)으로 실행하고 싶을 때 사용한다.
# '3'이 출력된다.
a = eval('1 + 2')
print(a)

# 'hia'가 출력된다.
b = eval("'hi' + 'a'")
print(b)

# '(1, 1)'이 출력된다.
c = eval('divmod(4, 3)')
print(c)

filter

  • filter란 무엇인가를 걸러낸다는 뜻으로 filter 함수도 동일한 의미를 가진다.
  • filter 함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받는다.
  • 그리고 두 번째 인수인 반복 가능한 자료형 요소가 첫 번째 인수인 함수에 입력되었을 때 반환 값이 참인 것만 묶어서(즉, 걸러서) 반환한다.
#positive.py 
def positive(l): 
    result = [] 
    for i in l: 
        if i > 0: 
            result.append(i) 
    return result

# 결과값: [1, 2, 6]
print(positive([1, -3, 2, 0, -5, 6]))
  • 즉 위에서 만든 함수 positive 는 리스트를 입력값으로 받아 각각의 요소를 판별해서 양수 값만 반환하는 함수이다.
  • filter 함수를 사용하면 위 내용을 다음과 같이 간단하게 작성할 수 있다.
def positive(x):
    return x > 0

# 결과값: [1, 2, 6]
print(list(filter(positive, [1, -3, 2, 0, -5, 6])))
  • 여기에서는 두 번째 인수인 리스트의 요소들이 첫 번째 인수인 함수 positive 에 입력이 되었을 때 반환 값이 참인 것만 묶어서 반환한다.
  • 앞의 예에서는 1 , 2 , 6 만 양수여서 x > 0 문장이 참이되므로, [1, 2, 6] 이라는 결과값이 반환된 것이다.
  • 앞의 함수는 lambda 를 사용하면 더욱 간편하게 코드를 작성할 수 있다.
# 결과값: [1, 2, 6]
print(list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6])))

hex

hex(x) 는 정수 값을 입력받아 16진수(hexa-decimal)로 변환한 뒤에 반환하는 함수이다.

# '0xea'이 출력된다.
a = hex(234)
print(a)

# '0x3'이 출력된다.
b = hex(3)
print(b)

id

id(object) 는 객체를 입력받아 객체의 고유 주소값(레퍼런스)을 반환하는 함수이다.

a = 3
b = a

# 모두 같은 주소값을 반환한다.
print(id(3))
print(id(a))
print(id(b))
  • 위의 예시에서 3 , a , b 는 고유 주소값이 모두 같다.
  • 즉, 3 , a , b 가 모두 같은 객체를 가리키고 있다.
  • 만약 id(4) 라고 입력하면 43 , a , b 와 다른 객체이므로 당연히 다른 고유 주소 값이 출력된다.

input

  • input([prompt])은 사용자 입력을 받아 문자열로 반환하는 함수이다.
  • 매개변수로 문자열을 주면 아래의 예시에서 볼 수 있듯이 그 문자열은 프롬프트가 된다.
  • 참고로, [ ] 기호는 괄호 안의 내용을 생략할 수 있다는 관례 표기법이다.
a = input()
print(a)

b = input('Enter: ')
print(b)

만약 입력값으로 hi 를 입력하면 결과는 아래와 같이 출력된다.

hi
hi
Enter: hi
hi

int

  • int(x) 는 문자열 형태의 숫자나 소수점이 있는 숫자 등을 정수 형태로 반환하는 함수이다.
  • 정수를 입력으로 받으면 그대로 반환한다.
# '3'이 출력된다.
a = int('3')
print(a)

# 정수로 변환시키기 위해 부동 소수점을 버림하여 '3'이 출력된다.
b = int(3.4)
print(b)
  • int(x, radix)radix 진수로 표현된 문자열 x 를 10진수로 변환한 뒤에 반환해주는 함수이다.
  • 2진수로 표현된 11 의 10진수 값은 다음과 같이 구한다.
# '3'이 출력된다.
a = int('11', 2)
print(a)
  • 16진수로 표현된 1A 의 10진수 값은 다음과 같이 구한다.
# '26'이 출력된다.
a = int('1A', 16)
print(a)

isinstance

  • isinstance(object, class) 는 첫 번째 인수로 인스턴스, 두 번째 인수로 클래스 이름을 받는다.
  • 입력으로 받은 인스턴스가 그 클래스의 인스턴스인지를 판단하여 참이면 True , 거짓이면 False 를 반환한다.
class A:
    pass

class B(A):
    pass

# 인스턴스 객체 'a'는 클래스 'A'를 통해 인스턴스화 되었으므로, 'True'가 출력된다.
a = A()
print(isinstance(a, A))

# 인스턴스 객체 'b'는 클래스 'B'를 통해 인스턴스화 되었으므로, 'True'가 출력된다.
b = B()
print(isinstance(b, B))

# 인스턴스 객체 'b'는 클래스 'B'를 통해 인스턴스화 되었고,
# 클래스 'B'는 클래스 'A'를 상속받은 클래스이므로, 'True'가 출력된다.
print(isinstance(b, A))

len

len(s) 은 입력값 s 의 길이(요소의 전체 개수)를 반환하는 함수이다.

# '6'이 출력된다.
a = len("python")
print(a)

# '3'이 출력된다.
b = len([1, 2, 3])
print(b)

# '2'가 출력된다.
c = len((1, 'a'))
print(c)

list

  • list(s) 는 반복 가능한 자료형 s 를 입력받아 리스트 타입으로 만들어 반환하는 함수이다.
  • list 함수에 리스트를 입력으로 주면 똑같은 리스트를 복사하여 반환한다.
# '['p', 'y', 't', 'h', 'o', 'n']'이 출력된다.
a = list("python")
print(a)

# '[1, 2, 3]'이 출력된다.
b = list((1, 2, 3))
print(b)

# '[1, 2, 3]'이 출력된다.
c = [1, 2, 3]
d = list(c)
print(d)

map

  • map(f, iterable) 은 함수( f )와 반복 가능한( iterable ) 자료형을 입력으로 받는다.
  • map 은 입력받은 자료형의 각 요소를 함수 f 가 수행한 결과를 묶어서 반환하는 함수이다.
def two_times(num_list):
    result = [ ]
    for number innum_list:
        result.append(number * 2)
    return result

# 결과값: [2, 4, 6, 8]
result = two_times([1, 2, 3, 4])
print(result)
  • 함수 two_times 는 리스트 요소를 입력받아 각 요소에 2 를 곱한 결과값을 반환한다.
  • 위 예제는 map 함수를 사용하면 다음처럼 바꿀 수 있다.
def two_times(x): 
    return x*2

# 결과값: [2, 4, 6, 8]
a = list(map(two_times, [1, 2, 3, 4]))
print(a)

위의 예제의 과정은 다음과 같다.

  1. 먼저 리스트의 첫 번째 요소인 1 이 함수 two_times 의 입력값으로 들어가고, 1 * 2 의 과정을 거쳐서 2 가 된다.
  2. 다음으로 리스트의 두 번째 요소인 22 * 2 의 과정을 거쳐 4 가 된다.
  3. 따라서 결과값 리스트는 이제 [2, 4] 가 된다.
  4. 총 4개의 요소값이 모두 수행되면 마지막으로 [2, 4, 6, 8] 을 반환한다.

참고로, 위의 예시에서는 map 의 결과를 리스트로 보여 주기위해 list 함수를 사용하여 출력하였다.

앞의 예는 lambda 를 사용하면 다음처럼 간략하게 만들 수 있다.

# 결과값: [2, 4, 6, 8]
a = list(map(lambda a: a * 2, [1, 2, 3, 4]))
print(a)

max

max(iterable) 는 인수로 반복 가능한 자료형을 입력받아 그 최대값을 반환하는 함수이다.

# '3'이 출력된다.
a = max([1, 2, 3])
print(a)

# 'y'가 출력된다.
b = max("python")
print(b)

min

min(iterable)max 함수와 반대로, 인수로 반복 가능한 자료형을 입력받아 그 최소값을 반환하는 함수이다.

# '1'이 출력된다.
a = min([1, 2, 3])
print(a)

# 'h'가 출력된다.
b = min('python')

oct

oct(x) 는 정수 형태의 숫자를 8진수 문자열로 바꾸어 반환하는 함수이다.

# '0o42'가 출력된다.
a = oct(34)
print(a)

# '0o30071'가 출력된다.
b = oct(12345)
print(b)

open

  • open(filename, [mode])"파일 이름""읽기 방법" 을 입력받아 파일 객체를 반환하는 함수이다.
  • 읽기 방법(mode)을 생략하면 기본값인 읽기 전용 모드(r)로 파일 객체를 만들어 반환한다.
mode 설명
w 쓰기 모드로 파일 열기
r 읽기 모드로 파일 열기
a 추가 모드로 파일 열기
b 바이너리 모드로 파일 열기 (주로 bw , r , a 와 함께 사용한다.)
f = open('binary_file', 'rb')
  • 위의 예시에서의 rb바이너리 읽기 모드를 의미한다.
  • 다음 예의 freadfread2 는 동일한 방법이다.
fread = open('read_mode.txt', 'r')
fread2 = open('read_mode.txt')
  • 즉 모드 부분을 생략하면 기본값으로 읽기 모드 r 를 갖게 된다.
  • 다음은 추가 모드( a )로 파일을 여는 예이다.
fappend = open('append_mode.txt', 'a')

ord

  • ord(c) 는 문자의 유니코드 값을 반환하는 함수이다.
  • 참고로, ord 함수는 chr 함수와 반대이다.
# '97'이 출력된다.
a = ord('a')
print(a)

# '44032'이 출력된다.
b = ord('가')
print(b)

pow

pow(x, y)xy 제곱한 결과값을 반환하는 함수이다.

# '16'이 출력된다.
a = pow(2, 4)
print(a)

# '27'이 출력된다.
b = pow(3, 3)
print(b)

range

  • range([start,] stop [,step] )for 문과 함께 자주 사용하는 함수이다.
  • 이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 반환한다.

인수가 하나일 경우

시작 숫자를 지정해 주지 않으면 range 함수는 0 부터 시작하며, n-1 까지 해당된다.

# 결과값: [0, 1, 2, 3, 4]
print(list(range(5)))

인수가 2개일 경우

  • 입력으로 주어지는 2개의 인수는 시작 숫자와 끝 숫자를 나타낸다.
  • 단, 끝 숫자는 해당 범위에 포함되지 않는다는 것(즉, n-1 까지만 해당된다.)에 주의해야 한다.
# 결과값: [5, 6, 7, 8, 9]
print(list(range(5, 10)))

인수가 3개일 경우

세 번째 인수는 숫자 사이의 거리를 말한다.

# 결과값: [1, 3, 5, 7, 9]
print(list(range(1, 10, 2)))

# 결과값: [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
print(list(range(0, -10, -1)))

round

  • round(number[, ndigits]) 함수는 숫자를 입력받아 반올림해 주는 함수이다.
  • 참고로, [, ndigits]ndigits 가 있을 수도 있고 없을 수도 있다는 의미이다.
# 결과값: 5
print(round(4.6))

# 결과값: 4
print(round(4.2))

다음과 같이 실수 5.678을 소수점 2자리까지만 반올림하여 표시할 수 있다.

# 결과값: 5.68
print(round(5.678, 2))

즉, round 함수의 두 번째 매개 변수는 반올림하여 표시하고 싶은 소수점의 자릿수(ndigits) 이다.

sorted

sorted(iterable) 함수는 입력값을 정렬한 후 그 결과를 리스트로 반환하는 함수이다.

# 결과값: [1, 2, 3]
print(sorted([3, 1, 2]))

# 결과값: ['a', 'b', 'c']
print(sorted(['a', 'c', 'b']))

# 결과값:['e', 'o', 'r', 'z']
print(sorted("zero"))

# 결과값: [1, 2, 3]
print(sorted((3, 2, 1)))
  • 리스트 자료형에도 sort 함수가 있다.
  • 하지만 리스트 자료형의 sort 함수는 리스트 객체 그 자체를 정렬만 할 뿐, 정렬된 결과를 돌려주지는 않는다.
l = [3, 1, 2, 5, 4]

# 리스트의 요소들을 정렬하며, 반환값은 'None'이다.
l.sort()

# 결과값: [1, 2, 3, 4, 5]
print(l)

str

str(object) 은 문자열 형태로 객체를 변환하여 반환하는 함수이다.

# 문자열 '3'이 출력된다.
a = str(3)
print(a)

# 문자열 'hi'가 출력된다.
b = str('hi')
print(b)

# upper 메서드는 모든 문자열을 대문자로 변환시켜주는 메서드이다.
c = str('hi'.upper())
# 'HI'가 출력된다.
print(c)

sum

sum(iterable) 은 입력받은 이터러블 객체의 모든 요소의 합을 반환하는 함수이다.

# 결과값: 6
a = sum([1, 2, 3])
print(a)

# 결과값: 15
b = sum((4, 5, 6))
print(b)

tuple

  • tuple(iterable) 은 반복 가능한 자료형을 입력받아 튜플 형태로 바꾸어 반환하는 함수이다.
  • 만약 튜플이 입력으로 들어오면 그대로 반환한다.
# 결과값: ('a', 'b', 'c')
a = tuple("abc")
print(a)

# 결과값: (1, 2, 3)
b = tuple([1, 2, 3])
print(b)

# 결과값: (1, 2, 3)
c = tuple((1, 2, 3))
print(c)

type

type(object) 은 입력값의 자료형이 무엇인지 알려 주는 함수이다.

# '<class 'str'>'이 출력된다.
print(type('abc'))

# '<class 'list'>'이 출력된다.
print(type([ ]))

# '<class '_io.TextIOWrapper'>'이 출력된다.
print(type(open('test.txt', 'w')))

zip

  • zip(*iterable) 은 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수이다.
  • 참고로, 여기서 사용한 *iterable 은 반복 가능(iterable)한 자료형 여러 개를 입력할 수 있다는 의미이다.
    • 즉, 가변 인자라는 뜻이다.
# 결과값: [(1, 4), (2, 5), (3, 6)]
a = list(zip([1, 2, 3], [4, 5, 6]))
print(a)

# 결과값: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
b = list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
print(b)

# 결과값: [('a', 'd'), ('b', 'e'), ('c', 'f')]
c = list(zip("abc", "def"))
print(c)

흔한 찐따

안녕하세요, 흔한 찐따 입니다.

Clone this wiki locally