[Python 기초] 파이썬 프로그래밍 - 내장함수

업데이트:

개요

jpg

파이썬 내장함수들은 외부 모듈과는 달리 import를 필요로 하지 않고 아무런 설정없이 바로 사용할 수 있다.
활용빈도가 높고 중요한 함수들을 중심으로 간략히 알아보자.

이외에도 정말 많은 내장 함수들이 존재하는데, 처음부터 모두 알고 시작하는 것은 그다지 추천하지 않는다. 이는 영어를 배우기 위해 영어사전의 모든 단어를 외우고 시작하는 것과 비슷하다.
따라서 활용빈도가 높은 몇개의 함수를 기억하고 필요에 따라 구글링이나 관련 서적을 통해 하나하나 추가시켜 나가는게 가장 좋은 방법이라고 생각한다.


내장함수

1. abs

abs함수는 절댓값을 돌려주는 함수이다.

abs(-3)
[Output] 3
abs(-1.2)
[Output] 1.2

2. all

all함수는 반복 가능한(iterable) 자료형을 입력인수로 넣고,
모두 참이면 True, 하나라도 거짓이면 False를 돌려준다.

all([1,2,3])
[Output] True
all([1,2,3,None])
[Output] False
all([1,2,3,0])
[Output] False
all("Hello")
[Output] True

반복 가능한(iterable)자료형이란, for문으로 그 값을 출력할 수 있는 것을 의미한다.
리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다.

3. any

any함수는 all과 비슷한데,
하나라도 참이 있으면 True, 모두 거짓일 경우에만 False를 돌려준다.

# any
any([1,2,3,0])
[Output] True
any([0,None])
[Output] False
any([0,""])
[Output] False

4. chr

chr함수는 아스키(ASCII) 코드값을 입력받아, 그 코드에 해당하는 문자를 출력하는 함수이다.

chr(97)
[Output] 'a'
chr(48)
[Output] '0'

5. dir

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

dir([1,2,3])
[Output] 
 'append',
 'clear',
 'copy',
 'count',
 'extend',
 'index',
 'insert',
 'pop',
 'remove',
 'reverse',
 'sort']

리스트와 관련된 함수를 보여준다.
앞의 변수들은 너무 많아 지웠다.

dir({'a':1})
[Output] 
 'clear',
 'copy',
 'fromkeys',
 'get',
 'items',
 'keys',
 'pop',
 'popitem',
 'setdefault',
 'update',
 'values']

딕셔너리와 관련된 함수를 보여준다.
앞의 변수들은 너무 많아 지웠다.

6. divmod

divmod(a,b)함수는 a를 b로 나눈 몫과 나머지를 튜플 형태로 리턴하는 함수이다.

divmod(7,3)
[Output] (2, 1)
divmod(5.5,5)
[Output] (1.0, 0.5)

7. enumerate

enumerate함수는 순서가 있는 자료형(리스트, 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함하는 enumerate객체를 돌려준다.

for i in enumerate(["data","mining","python"]):
    print(i)
[Output] 
(0, 'data')
(1, 'mining')
(2, 'python')

쉽게 말해 순서가 있는 자료형(리스트, 튜플, 문자열)을 입력하면 enumerate객체를 돌려주는데, 이를 보기쉽게 for문으로 print해보면 리스트안의 각 요소들에 인덱스 값을 붙여 반환해준것을 볼 수 있다.

for문을 응용해서 인덱스와 값을 따로 뽑을 수 있고

for i, name in enumerate(["data","mining","python"]):
    print(i,name)
[Output]
0 data
1 mining
2 python

이를 이용해서 인덱스 값과 값들을 따로 저장해 유용하게 사용할 수도 있다.

index = []
value = []
for i, name in enumerate(["data","mining","python"]):
    index.append(i)
    value.append(name)

print(index)
print(value)
[Output]
[0, 1, 2]
['data', 'mining', 'python']

다양하게 활용이 가능하다.

8. eval

eval함수는 실행가능한 문자열을 입력으로 받아 문자열을 실행한 결과값을 돌려주는 함수이다.

eval('1+2')
[Output] 3
eval("'hi'+'yg'")
[Output]'hiyg'
eval('divmod(5.5,0.5)')
[Output](11.0, 0.0)

이와 같이 입력값이 문자열 임에도 불구하고 실제로 실행을 가능하게 해준다.

9. filter

filter함수는 첫 번째 인수로 함수이름, 두번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받는다.
그리고 그 함수에 차례로 대입하면서 입력되었을때 참인 것만 묶어서 돌려준다.

예를 들어 다음과 같이 양수만 걸러주는 함수 positive를 만들었다고 해보자.

def positive(numbers):
    result = []
    for num in numbers:
        if num > 0:
            result.append(num)
    return result
positive([-1,-2,-5,0,1,4,5,-2])
[Output] [1, 4, 5]

여기에서 위 함수의

    for num in numbers:

이 부분의 역할을 filter가 대신해주는 것이다.

이번에는 positive함수를 다음과 같이 양수이면 True를, 양수가 아니면 False를 출력하게만 만들었다.

def positive(num):
    return num > 0
print(positive(1))
print(positive(-2))
print(positive(-3))
[Output]
True
False
False

그 다음 filter함수를 이용해보자.

list(filter(positive,[1,-2,-3,5,-4]))
[Output] [1, 5]

이와 같이 filter함수를 이용해 두번째 인수에 입력된 반복 가능한 자료형을 positive함수에 차례로 입력해서 참인 요소들만 걸러준 것을 알 수 있다.

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

대표적인 예로, 이후에 나올 내장 함수인 lambda를 이용했다.
여기서 lambda x : x > 0는 앞서 정의한 positive함수와 같은 역할을 한다.

10. hex

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

hex(234)
[Output] '0xea'
hex(3)
[Output] '0x3'

11. id

id는 객체를 입력받아 객체의 고유 주소값(레퍼런스)을 리턴하는 함수이다.
레퍼런스는 앞의 변수포스팅에서 설명했던, ‘가리키는 것’을 의미한다.

a = 3
b = 3
id(a)
[Output] 1450863744
id(b)
[Output] 1450863744
id(3)
[Output] 1450863744

이와 같이 a,b,3은 모두 3을 가리키고 있으므로 주소값(레퍼런스)가 같은 것을 알 수 있다.

id(4)
[Output] 1450863776

그러나 4의 경우는 다르다.

12. input

앞에서도 몇번 나왔지만,
imput함수는 사용자 입력을 받는 함수이다.
입력인수로 문자열을 주면 그 문자열은 프롬프트가 된다.

a = input()
[Output] "hahaha"  #사용자의 입력
a
[Output] '"hahaha"'
b = input("chat : ")
[Output] chat : blahblah   #사용자의 입력
b
[Output] 'blahblah'

13. int

int는 문자열 형태의 숫자나 소숫점이 있는 숫자 등을 정수 형태로 돌려주는 함수이다.

int(3)
[Output] 3
int(3.4)
[Output] 3

소숫점이 있는 숫자는 문자열의 형태로 나타내지 않아도 된다.

int(0.001)
[Output] 0
int(-1.5)
[Output] -1

14. isinstance

isinstance(object, class)함수는 첫 번쨰 인수로 인스턴스, 두 번째 인수로 클래스의 이름을 받아 해당 인스턴스가 그 클래스의 인스턴스인지 아닌지를 판단하여 True와 False를 돌려준다.

class Test:
    pass
a = Test()
b = 3
isinstance(a, Test)
[Output] True
isinstance(b, Test)
[Output] False

a는 Test클래스의 인스턴스이지만 b는 아니므로 False값을 돌려주었다.

15. lambda

lambda는 함수를 생성할때 사용하는 예약어로, def와 동일한 역할을 한다.
보통 함수를 한줄로 간결하게 만들 때 사용한다.
보통 def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.

구조는 다음과 같다.

lambda 인수1, 인수2, ... : 인수를 이용한 표현식

다음 예제를 보자.

sum = lambda a, b : a+b
sum(1,2)
[Output] 3
mul = lambda a, b : a*b
mul(3,4)
[Output] 12

합해주는 sum함수와 곱해주는 mul함수를 간편히 만들 수 있다.

가장 편리한 점은 아래와 같이 리스트 내에 lambda함수를 넣었을 때이다.

my_list = [lambda a, b : a+b, lambda a, b : a*b]

그러면,

my_list[0](1,2)
[Output] 3
my_list[1](3,4)
[Output] 12

이와 같이 리스트의 인덱싱을 활용해 함수를 꺼내 바로 사용할 수 있는 편리함이 있다.

16. len

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

len("python")
[Output] 6

문자열은 개별문자의 개수를 반환한다.

len([1,2,3,4,5])
[Output] 5
len((1,2,3,'a'))
[Output] 4

리스트는 요소의 개수를 반환한다.

17. list

list함수는 반복 가능한 자료형을 입력받아 리스트로 만들어 돌려주는 함수이다.

list("python")
[Output] ['p', 'y', 't', 'h', 'o', 'n']

문자열의 개별 문자들을 리스트로 반환한다.

list({'a':1,'b':2,'c':3})
[Output] ['a', 'b', 'c']

딕셔너리의 경우 key값만 리스트 요소로 반환한다.

list((1,2,3))
[Output] [1, 2, 3]

튜플의 경우이다.

18. map

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

어떤 입력값에 2를 곱해주는 함수 two_times를 다음과 같이 만들었다고 해보자.

def two_times(numbers):
    result = []
    for num in numbers:
        result.append(num * 2)
    return result
two_times([1,2,3,4])
[Output] [2, 4, 6, 8]

for문 을통해 리스트 자료형의 각 요소들에 2를 곱해 다시 리스트에 넣어 반환한다.

그럼 이번에는 two_times함수를 단지 2를 곱하기만 해주는 함수로 정의하자.

def two_times(x):
    return x *2
two_times(2)
[Output] 4

그리고 map함수를 다음과 같이 이용할 수 있다.

list(map(two_times,[1,2,3,4]))
[Output] [2, 4, 6, 8]

lambda함수를 이용한 방법은 다음과 같다.

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

이는 9번의 filter함수와 비슷한 기능이다.

filter는 입력받는 함수가 참과 거짓을 판별하는 경우, 참인 요소들을 돌려주는 함수이고
map은 입력받는 함수의 각각의 결과값들을 돌려주는 함수이다.

다음은 1을 더해주는 함수 plus_one을 정의한 예제이다.

def plus_one(x):
    return x + 1
list(map(plus_one,[1,2,3,4]))
[Output] [2, 3, 4, 5]

같은 방법으로 lambda함수를 이용한 경우이다.

list(map(lambda x : x+1 , [1,2,3,4]))
[Output] [2, 3, 4, 5]

19. max

max는 반복 가능한(iterable) 자료형을 입력받아 최대값을 돌려주는 함수이다.

max(1,2,3)
[Output] 3

튜플의 경우이다.

max([1,2,3])
[Output] 3

리스트의 경우이다.

max("python")
[Output] 'y'

문자열의 경우로 알파벳 순 최대값이다.

max({'a':1,'b':2,'c':3})
[Output] 'c'

딕셔너리의 경우 key값의 최대값을 돌려준다.

20. min

max와 똑같이 사용되며 반대로 최솟값을 돌려주는 함수이다.

min([1,2,3])
[Output] 1
min({'a':1,'b':2,'c':3})
[Output] 'a'
min("python")
[Output] 'h'

21. pow

pow(x,y)는 x의 y제곱한 결과값을 돌려주는 함수이다.

pow(2,4)
[Output] 16

2의 4제곱이다.

pow(3,3)
[Output] 27

3의 3제곱이다.

22. range

for문에 주로 사용된다고 했었던 range함수이다.
설명은 for문 포스팅에서도 했기 때문에 생략한다.

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

range함수에 인수가 세개인 경우, 세 번째 인수는 숫자 사이의 거리를 의미한다.

list(range(1,11,2))
[Output] [1, 3, 5, 7, 9]

1부터 10까지 숫자중 2간격으로 출력

list(range(0,-11,-2))
[Output] [0, -2, -4, -6, -8, -10]

0부터 -10까지의 숫자를 -2간격으로 출력

23. sorted

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

sorted([3,1,2])
[Output] [1, 2, 3]
sorted(['c','a','b'])
[Output] ['a', 'b', 'c']
sorted('python')
[Output] ['h', 'n', 'o', 'p', 't', 'y']
sorted((1,2,3))
[Output] [1, 2, 3]

리스트 자료형 관련 함수로 sort함수와의 차이를 알아두자.

a = [3,1,2]
test = a.sort()
print(test)
print(a)
[Output]
None
[1, 2, 3]

리스트 관련 함수인 sort함수는 돌려주는 결과값이 없고 자료형 자체를 바로 정렬해버리기 때문에 test변수에 저장되는 값이 없다. 따라서 test변수를 print하면 None이 출력된다.

24. str

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

str(3)
[Output] '3'

숫자형이 문자열 자료형이 되었다.

str([1,2,3])
[Output] '[1, 2, 3]'

25. tuple

tuple(iterable)은 반복 가능한 자료형을 입력받아 튜플 형태로 바꾸어 돌려주는 함수이다.

tuple("python")
[Output] ('p', 'y', 't', 'h', 'o', 'n')
tuple([1,2,3])
[Output] (1, 2, 3)
tuple({'a':1,'b':2,'c':3})
[Output] ('a', 'b', 'c')

딕셔너리는 역시 key값만 튜플로 바꾸어 준다.

26. type

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

type('abc')
[Output] str
type([])
[Output] list

간단한 함수이지만 오류 처리나 코드를 짤때나, 자료형을 확인하는것이 가장 중요하기 때문에 많이 사용되는 함수이다.

27. zip

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

list(zip([1,2,3],[4,5,6]))
[Output] [(1, 4), (2, 5), (3, 6)]
list(zip("abc","def"))
[Output] [('a', 'd'), ('b', 'e'), ('c', 'f')]
list(zip([1,2,3],[4,5,6],[7,8,9],[10,11,12]))
[Output] [(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)]
list(zip("python", "yganalyst"))
[Output] [('p', 'y'), ('y', 'g'), ('t', 'a'), ('h', 'n'), ('o', 'a'), ('n', 'l')]

입력된 자료형들의 짝이 안맞으면, 수가 적은쪽을 기준으로 맞춰서 묶어준다.


Reference

도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.

댓글남기기