[Python] 내장 함수

미남로그·2021년 10월 24일
0

5장 정리

1️⃣ 클래스
2️⃣ 예외 처리
3️⃣ 내장 함수
4️⃣ 라이브러리
5️⃣ 연습문제

저는 위 교재를 참고하여 학습 중이며 교재를 바탕으로 내용을 정리하였습니다.

5장의 이름은 '파이썬 날개달기'라는 chapter이고, 5번째 '내장함수' 파트입니다.

내장 함수란 파이썬에서 기본적으로 포함하고 있는 함수입니다.

이미 여러 가지 내장함수를 배웠는데, 그중 print, del, type이 있습니다. 이처럼 그냥 쓸 수 있는 함수가 내장 함수입니다!



abs

abs(x)는 어떤 숫자를 입력 받았을 때, 그 숫자의 절댓값을 돌려주는 함수입니다.

>>> abs(3)
3
>>> abs(-3)
3
>>> abs(-1.2)
1.2

all

쉽게는 모두 참인지 검사해주는 함수입니다.

all(x)는 반복 가능한(iterable) 자료형 x를 입력 인수로 받고,

이 x의 요소가 모두 참이면 True
거짓이 하나라도 있으면 False

>>> all([1, 2, 3])
True
>>> all([1, 2, 3, 0])
False
>>> all([])
True

any

하나라도 참이 있는가 확인하는 함수

any(x)는 반복 가능한(iterable) 자료형 x를 입력 인수로 받고,

이 x의 요소 중 하나라도 참이 있으면 True
x가 모두 거짓일 때에만 False
all(x)의 반대이다.

>>> any([1, 2, 3, 0])
True
>>> any([0, ""])
False
>>> any([])
False

chr

ASCII 코드를 입력받아 문자 출력(chr(i)는 유니코드(Unicode) 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다.)

>>> chr(97)
'a'
>>> chr(44032)
'가'

dir

dir은 객체가 자체적으로 가지고 있는 변수나 함수를 보여 준다.

>>> dir([1, 2, 3])
['append', 'count', 'extend', 'index', 'insert', 'pop',...]
>>> dir({'1':'a'})
['clear', 'copy', 'get', 'has_key', 'items', 'keys',...]

리스트와 딕셔너리 객체 관련 함수를 알려준다.

divmod

몫과 나머지를 튜플 형태로 돌려줌

>>> divmod(7, 3)
(2, 1)

몫을 구하는 연산자 //와 나머지를 구하는 연산자 %를 각각 사용한 결과와 비교하기

>>> 7 // 3
2
>>> 7 % 3
1

enumerate

순서가 있는 자료형(리스트, 튜플, 문자열)을 입력으로 받아서 인덱스를 포함하는 객체를 돌려줍니다. 꼭 딕셔너리처럼 열거해주는 함수(key-value)입니다.

>>> for i, name in enumerate(['body', 'foo', 'bar']):
...     print(i, name)
...
0 body
1 foo
2 bar

for문처럼 반복되는 구간에서 객체가 현재 어느 위치에 있는지 알려 주는 인덱스 값이 필요할때 enumerate 함수를 사용하면 매우 유용하다.

text 전처리 후 단어 사전 만들 때 사용했던 것 같습니다.

eval

실행 후 결과값을 돌려줌

>>> eval('1+2')
3
>>> eval("'hi' + 'a'")
'hia'
>>> eval('divmod(4, 3)')
(1, 1)

보통 eval은 입력받은 문자열로 파이썬 함수나 클래스를 동적으로 실행하고 싶을 때 사용합니다.

filter

함수를 통과하여 참인 것만 돌려줌

#positive.py 
def positive(l):
	result = []
    	for i in l:
        	if i > 0:
            		result.appned(i)
        return result
                
print(positive([1,-3,2,0,-5,6]))

결과값: [1,2,6]

즉 위에서 만든 positive 함수는 리스트를 입력으로 받아 각각의 요소를 판별해 양수만 돌려주는 함수입니다.

filter 함수를 사용하면 위 내용을 더 간단히 적을 수 있습니다.

def positive(x):
	return x > 0
    
print(list(filter(positive,[1,-3,2,0,-5,6])))

결과값: [1,2,6]

여기에서는 두 번째 인수인 리스트의 요소들이 첫 번째 인수인 positive 함수에 입력되었을때 반환 값이 참인 것만 묶어서 돌려준다.

앞의 예에서는 1, 2, 6만 양수여서 x > 0 문장이 참이되므로 [1, 2, 6]이라는 결괏값을 돌려주게 된 것이다.

>>> list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6]))
[1,2,6]

hex

hex(x)는 정수 값을 입력받아 16진수(hexadecimal)로 변환하여 돌려주는 함수이다.

>>> hex(234)
'0xea'
>>> hex(3)
'0x3'

id

객체를 입력 받아 고유 주소 값을 알려줌

>>> a = 3
>>> id(3)
135072304
>>> id(a)
135072304
>>> b = a
>>> id(b)
135072304

input

input([prompt])은 사용자 입력을 받는 함수입니다. 매개변수로 문자열을 주면 다음 세 번째 예에서 볼 수 있듯이 그 문자열은 프롬프트가 됩니다.

>>> a = input()
hi
>>> a
'hi'
>>> b = input("Enter: ")
Enter: hi
>>> b
'hi'

int

10진수 정수 변환

>>> int('3')
3
>>> int(3.4)
3

2진수로 표현된 11의 10진수 값은 다음과 같이 구한다.

>>> int('11', 2)
3

16진수로 표현된 1A의 10진수 값은 다음과 같이 구한다.

>>> int('1A', 16)
26

isinstance

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

>>> class Person: pass
...
>>> a = Person()
>>> isinstance(a, Person)
True

Person이란 class가 생성되었고, a에게 Person 클래스를 준다. a는 Person의 인스턴스가 되었다.

>>> b = 3
>>> isinstance(b, Person)
False

b는 Person 클래스가 만든 인스턴스가 아니므로 False

len

입력값 s의 길이(요소의 전체 개수)를 돌려주는 함수

>>> len("python")
6
>>> len([1,2,3])
3
>>> len((1, 'a'))
2

list

리스트로 변환

>>> list("python")
['p', 'y', 't', 'h', 'o', 'n']
>>> list((1,2,3))
[1, 2, 3]
>>> a = [1, 2, 3]
>>> b = list(a)
>>> b
[1, 2, 3]

위의 예시처럼 리스트 a를 입력으로 주면 똑같은 리스트를 복사해서 돌려준다.

map

각 요소가 수행한 결과를 돌려줌

map(f, iterable)은 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다. map은 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다.

# two_times.py
def two_times(numberList):
    result = [ ]
    for number in numberList:
        result.append(number*2)
    return result

result = two_times([1, 2, 3, 4])
print(result)

two_times 함수는 리스트 요소를 입력받아 각 요소에 2를 곱한 결괏값을 돌려준다. 실행 결과는 다음과 같다.

결과값: [2,4,6,8]

map을 사용해서 바꾼다면

>>> def two_times(x):
	return x*2
...
>>> list(map(two_times, [1,2,3,4]))
[2,4,6,8]

이를 lambda로 바꿔본다면

>>> list(map(lambda a: a*2, [1,2,3,4]))
[2,4,6,8]

max

최댓값

>>> max([1, 2, 3])
3
>>> max("python")
'y'

min

최솟값

>>> min([1, 2, 3])
1
>>> min("python")
'h'

oct

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

>>> oct(34)
'0o42'
>>> oct(12345)
'0o30071'

open

open(filename, [mode])은 "파일 이름"과 "읽기 방법"을 입력받아 파일 객체를 돌려주는 함수이다. 읽기 방법(mode)을 생략하면 기본값인 읽기 전용 모드(r)로 파일 객체를 만들어 돌려준다.

mode설명
w쓰기 모드로 파일 열기
r읽기 모드로 파일 열기
a추가 모드로 파일 열기
b바이너리 모드로 파일 열기

b는 w, r, a와 함께 사용한다.

>>> f = open("binary_file", "rb")

rb는 '바이너리 읽기기 모드'를 의미

>>> fread = open("read_mode.txt", 'r')
>>> fread2 = open("read_mode.txt")

읽기 모드 r은 기본값이다.

ord

ord(c)는 문자의 유니코드 값을 돌려주는 함수이다.

※ ord 함수는 chr 함수와 반대이다.

>>> ord('a')
97
>>> ord('가')
44032

pow

제곱

>>> pow(2,4)
16
>>> pow(3,3)
27

range

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

인수가 하나일 경우

시작 숫자를 지정해 주지 않으면 range 함수는 0부터 시작한다.

>>> list(range(5))
[0,1,2,3,4,5]

인수가 2개일 경우

입력으로 주어지는 2개의 인수는 시작 숫자끝 숫자를 나타낸다. 단 끝 숫자는 해당 범위에 포함되지 않는다는 것에 주의하자.

>>> list(range(5, 10))
[5, 6, 7, 8, 9]

인수가 3개일 경우

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

>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

round

반올림

round(number[, ndigits])

>>> round(4.6)
5
>>> round(4.2)
4

소숫점 2자리까지로 지정 가능

>>> round(5.678, 2)
5.68

sorted

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

>>> sorted([3,1,2])
[1,2,3]
>>> sorted(['a','c','b'])
['a','b','c']
>>> sorted(['zero'])
['e','o','r','z']
>>> sorted([3,2,1])
[1,2,3]

리스트 자료형에도 sort 함수가 있다. 하지만 리스트 자료형의 sort 함수는 리스트 객체 그 자체를 정렬만 할 뿐 정렬된 결과를 돌려주지는 않는다.

str

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

>>> str(3)
'3'
>>> str('hi')
'hi'
>>> str('hi'.upper())
'HI'

sum

sum(iterable) 은 입력받은 리스트나 튜플의 모든 요소의 합을 돌려주는 함수이다.

>>> sum([1,2,3])
6
>>> sum((4,5,6))
15

tuple

튜플 변환(tuple(iterable)은 반복 가능한 자료형을 입력받아 튜플 형태로 바꾸어 돌려주는 함수이다. 만약 튜플이 입력으로 들어오면 그대로 돌려준다.)

>>> tuple("abc")
('a', 'b', 'c')
>>> tuple([1, 2, 3])
(1, 2, 3)
>>> tuple((1, 2, 3))
(1, 2, 3)

type

자료형 타입 알려주는 것

>>> type("abc")
<class 'str'> # 문자열
>>> type([ ])
<class 'list'> # 리스트형
>>> type(open("test", 'w'))
<class '_io.TextIOWrapper'> # 쓰기 모드의 경우

zip

자료형을 묶어주는 것

zip(*iterable)은 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수이다.

※ *iterable은 반복 가능(iterable)한 자료형 여러 개를 입력할 수 있다는 의미이다.

>>> list(zip([1,2,3],[4,5,6]))
[(1, 4), (2, 5), (3, 6)]
>>> list(zip([1,2,3],[4,5,6],[7,8,9]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list(zip('abc', 'def'))
[('a', 'd'), ('b', 'e'), ('c', 'f')]
profile
미남이 귀엽죠

0개의 댓글