-
Notifications
You must be signed in to change notification settings - Fork 0
2.16. 내용정리: 16일차
- 프로그래밍에서 내장 함수에 대한 이야기할 때 내장 되어있다는 뜻의
built-in
이라는 표현을 자주 사용한다. - 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 타입(type)을 사용할 수 있는 함수들이 내장되어 있다.
- 대표적으로,
print
,del
,type
,list
등이 바로 내장 함수이다. - 이러한 파이썬 내장 함수는 외부 모듈과 달리
import
가 필요하지 않기 때문에 아무런 설정 없이 바로 사용할 수 있다. - 공식 문서의 파이썬 내장 함수를 참고하면 더 자세한 정보를 확인할 수 있다.
abs(x)
는 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 반환하는 함수이다.
# '3'이 출력된다.
a = abs(3)
print(a)
# '3'이 출력된다.
b = abs(-3)
print(b)
# '1.2'가 출력된다.
c = abs(-1.2)
print(c)
-
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(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(i)
는 유니코드(Unicode) 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다. - 유니코드란, 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.
a = chr(97)
# 'a'가 출력된다.
print(a)
# '가'가 출력된다.
b = chr(44032)
print(b)
-
dir
은 객체가 자체적으로 가지고 있는 변수(속성)나 함수(메서드)를 보여 준다. - 결과는 리스트로 반환된다.
# ['append', 'count', 'extend', 'index', 'insert', 'pop', ...]
print(dir([1, 2, 3]))
# ['clear', 'copy', 'get', 'has_key', 'items', 'keys', ...]
print(dir({ '1': 'a' }))
-
divmod(a, b)
는 2개의 숫자를 입력으로 받는다. - 그리고
a
를b
로 나눈 몫과 나머지를 튜플 형태로 반환하는 함수이다. - 몫을 구하는 연산자
//
와 나머지를 구하는 연산자%
를 각각 사용한 결과와 동일하다.
# '(2, 1)'이 출력된다.
a = divmod(7, 3)
print(b)
# '2'가 출력된다.
b = 7 // 3
print(b)
# '1'이 출력된다.
c = 7 % 3
print(c)
-
enumerate
는 사전적인 의미로 "열거하다"라는 의미이다. -
enumerate
함수는 순서가 있는 자료형(list
,tuple
,str
)을 입력으로 받아 인덱스(index) 값을 포함하는enumerate
객체를 반환한다. - 주로
enumerate
함수는for
문과 함께 자주 사용한다.
for i, element in enumerate(['a', 'b', 'c']):
print(i, element)
-
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
함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받는다. - 그리고 두 번째 인수인 반복 가능한 자료형 요소가 첫 번째 인수인 함수에 입력되었을 때 반환 값이 참인 것만 묶어서(즉, 걸러서) 반환한다.
#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(x)
는 정수 값을 입력받아 16진수(hexa-decimal)로 변환한 뒤에 반환하는 함수이다.
# '0xea'이 출력된다.
a = hex(234)
print(a)
# '0x3'이 출력된다.
b = hex(3)
print(b)
id(object)
는 객체를 입력받아 객체의 고유 주소값(레퍼런스)을 반환하는 함수이다.
a = 3
b = a
# 모두 같은 주소값을 반환한다.
print(id(3))
print(id(a))
print(id(b))
- 위의 예시에서
3
,a
,b
는 고유 주소값이 모두 같다. - 즉,
3
,a
,b
가 모두 같은 객체를 가리키고 있다. - 만약
id(4)
라고 입력하면4
는3
,a
,b
와 다른 객체이므로 당연히 다른 고유 주소 값이 출력된다.
-
input([prompt])
은 사용자 입력을 받아 문자열로 반환하는 함수이다. - 매개변수로 문자열을 주면 아래의 예시에서 볼 수 있듯이 그 문자열은 프롬프트가 된다.
- 참고로,
[ ]
기호는 괄호 안의 내용을 생략할 수 있다는 관례 표기법이다.
a = input()
print(a)
b = input('Enter: ')
print(b)
만약 입력값으로 hi
를 입력하면 결과는 아래와 같이 출력된다.
hi
hi
Enter: hi
hi
-
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(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(s)
은 입력값 s
의 길이(요소의 전체 개수)를 반환하는 함수이다.
# '6'이 출력된다.
a = len("python")
print(a)
# '3'이 출력된다.
b = len([1, 2, 3])
print(b)
# '2'가 출력된다.
c = len((1, 'a'))
print(c)
-
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(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
이 함수two_times
의 입력값으로 들어가고,1 * 2
의 과정을 거쳐서2
가 된다. - 다음으로 리스트의 두 번째 요소인
2
가2 * 2
의 과정을 거쳐4
가 된다. - 따라서 결과값 리스트는 이제
[2, 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(iterable)
는 인수로 반복 가능한 자료형을 입력받아 그 최대값을 반환하는 함수이다.
# '3'이 출력된다.
a = max([1, 2, 3])
print(a)
# 'y'가 출력된다.
b = max("python")
print(b)
min(iterable)
은 max
함수와 반대로, 인수로 반복 가능한 자료형을 입력받아 그 최소값을 반환하는 함수이다.
# '1'이 출력된다.
a = min([1, 2, 3])
print(a)
# 'h'가 출력된다.
b = min('python')
oct(x)
는 정수 형태의 숫자를 8진수 문자열로 바꾸어 반환하는 함수이다.
# '0o42'가 출력된다.
a = oct(34)
print(a)
# '0o30071'가 출력된다.
b = oct(12345)
print(b)
-
open(filename, [mode])
은"파일 이름"
과"읽기 방법"
을 입력받아 파일 객체를 반환하는 함수이다. - 읽기 방법(mode)을 생략하면 기본값인 읽기 전용 모드(r)로 파일 객체를 만들어 반환한다.
mode | 설명 |
---|---|
w | 쓰기 모드로 파일 열기 |
r | 읽기 모드로 파일 열기 |
a | 추가 모드로 파일 열기 |
b | 바이너리 모드로 파일 열기 (주로 b 는 w , r , a 와 함께 사용한다.) |
f = open('binary_file', 'rb')
- 위의 예시에서의
rb
는 바이너리 읽기 모드를 의미한다. - 다음 예의
fread
와fread2
는 동일한 방법이다.
fread = open('read_mode.txt', 'r')
fread2 = open('read_mode.txt')
- 즉 모드 부분을 생략하면 기본값으로 읽기 모드
r
를 갖게 된다. - 다음은 추가 모드(
a
)로 파일을 여는 예이다.
fappend = open('append_mode.txt', 'a')
-
ord(c)
는 문자의 유니코드 값을 반환하는 함수이다. - 참고로,
ord
함수는chr
함수와 반대이다.
# '97'이 출력된다.
a = ord('a')
print(a)
# '44032'이 출력된다.
b = ord('가')
print(b)
pow(x, y)
는 x
의 y
제곱한 결과값을 반환하는 함수이다.
# '16'이 출력된다.
a = pow(2, 4)
print(a)
# '27'이 출력된다.
b = pow(3, 3)
print(b)
-
range([start,] stop [,step] )
는for
문과 함께 자주 사용하는 함수이다. - 이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 반환한다.
시작 숫자를 지정해 주지 않으면 range
함수는 0
부터 시작하며, n-1
까지 해당된다.
# 결과값: [0, 1, 2, 3, 4]
print(list(range(5)))
- 입력으로 주어지는 2개의 인수는 시작 숫자와 끝 숫자를 나타낸다.
- 단, 끝 숫자는 해당 범위에 포함되지 않는다는 것(즉,
n-1
까지만 해당된다.)에 주의해야 한다.
# 결과값: [5, 6, 7, 8, 9]
print(list(range(5, 10)))
세 번째 인수는 숫자 사이의 거리를 말한다.
# 결과값: [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(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(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(object)
은 문자열 형태로 객체를 변환하여 반환하는 함수이다.
# 문자열 '3'이 출력된다.
a = str(3)
print(a)
# 문자열 'hi'가 출력된다.
b = str('hi')
print(b)
# upper 메서드는 모든 문자열을 대문자로 변환시켜주는 메서드이다.
c = str('hi'.upper())
# 'HI'가 출력된다.
print(c)
sum(iterable)
은 입력받은 이터러블 객체의 모든 요소의 합을 반환하는 함수이다.
# 결과값: 6
a = sum([1, 2, 3])
print(a)
# 결과값: 15
b = sum((4, 5, 6))
print(b)
-
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(object)
은 입력값의 자료형이 무엇인지 알려 주는 함수이다.
# '<class 'str'>'이 출력된다.
print(type('abc'))
# '<class 'list'>'이 출력된다.
print(type([ ]))
# '<class '_io.TextIOWrapper'>'이 출력된다.
print(type(open('test.txt', 'w')))
-
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)