-
Notifications
You must be signed in to change notification settings - Fork 1
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)