2 minute read

파이썬에는 다양한 내장 함수가 있다. 모든 것을 당장 외우고 공부할 필요는 없지만 편리한 파이썬 프로그래밍을 하기 위해 활용 빈도가 높은 함수들 위주로 알아보자.



1. abs

abs(x)는 어떤 숫자를 입력 받았을 때 그 숫자의 절대 값을 리턴하는 함수이다.

1
2
3
4
5
>>> abs(3)
3

>>> abs(-1.2)
1.2


2. all

all(x)는 반복 가능한 데이터 x를 입력 값으로 받으며 이 x의 요소가 모두 참이면 True, 하나라도 거짓이 있다면 false를 반환한다. 여기서 반복 가능한 데이터란 for문에서 사용할 수 있는 데이터로 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다.

1
2
3
4
5
6
7
8
>>> all([1,2,3])
True

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

>>>all([])
True

리스트 [1,2,3]은 모든 요소가 참이므로 True를 반환하지면 [1,2,3,0]은 0이 거짓이므로 False를 반환한다. 그리고 입력 인수가 빈 값인 경우에는 True를 리턴한다.


3. any

any(x)는 all(x)와 반대의 기능을 한다. 하나라도 참이 있으면 True를 반환하고 모두 거짓일 때 False를 반환한다.

1
2
3
4
5
6
7
8
>>> any([1,2,3,0])
True

>>> any([1,2,3])
False

>>> any([])
False

all의 결과와 완전히 반대되는 결과를 얻는다.


4. chr

chr(i)는 유니코드 숫자 값을 입력 받아 그 코드에 해당하는 문자를 반환하다.

1
2
3
4
5
>>> chr(97)
'a'

>>> chr(44032)
'가'    


5. dir

dir은 객체가 지닌 변수나 함수를 보여주는 함수이다.

1
2
3
4
5
>>> dir([1,2,3])
['append', 'count', 'extend', 'index', 'insert', ...]

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

dir([1,2,3])의 결과를 보면 리스트 []가 지닌 함수들을 반환했다. 마찬가지로 dir({‘1’:’a’})는 딕셔너리{}가 지닌 함수들을 반환했다. 이처럼 dir은 객체가 지닌 변수나 함수를 반환한다.


6. enumerate

enumerate는 ‘열거하다’ 라는 뜻이다. 순서가 있는 데이터 즉, 리스트나 튜플, 문자열을 입력받아 인덱스 값을 포함하는 enumerate 객체를 리턴한다.

1
2
3
4
5
6
>>>for i, name in enumerate(['body', 'foo', 'bar']):
        print(i, name)

0 body
1 foo
2 bar

위 예제의 결과를 보면 body, foo, bar가 순서대로 출력되었다. enumerate를 for문과 함께 사용하면 자료형의 현재 순서와 그 값을 쉽게 알 수 있다. 따라서 for문 처럼 반복되는 구간에서 객체가 현재 어느 위치에 있는지 알려주는 인덱스 값이 필요할 때 유용하게 사용할 수 있다.


7. eval

eval 함수는 문자열로 구성된 표현식을 입력 받아 해당 문자열을 실행한 결과 값을 반환한다.

1
2
3
4
5
6
7
8
>>> eval('1+2')
3

>>> eval("'hi'+'a'")
'hia'

>>> eval('abs(-1)')
1


8. filter

filter는 첫 번째 인수로 함수, 두 번째 인수로 함수에 들어갈 반복 가능한 데이터를 받는다. 그리고 반복 가능한 데이터의 요소 순서대로 함수를 호출 했을 때 리턴 값이 참인것만 묶어서 반환한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def positive(data):
    result = [] 
    for i in data:
        if i > 0:
            result.append(i)
    return result

>>> print(list(positive([1,-3,2,0,-5,6])))
[1,2,6]


def positive(data):
    return data > 0

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

위 함수들은 동일한 기능을 하는 함수이다. 첫 번째 함수는 data를 반복하면서 0보다 큰 수를 찾아서 반환해주지만 filter를 사용하면 두 번째 함수처럼 0보다 크다는 조건에 맞는 값만 묶어서 반환해준다.
위 함수를 한 번 더 변형시킬 수 있는데 lambda를 사용하는 방법이다. 알아두도록 하자.

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


9. hex

hex(x)는 정수를 입력 받아 16진수 문자열로 변환하여 반환한다.

1
2
3
4
5
>>> hex(234)
'0xea'

>>> hex(3)
'0x3'


10. id

id는 객체를 입력 받아 객체의 고유 주소값(레퍼런스)을 반환한다. 아래 예제를 보면 3,a,b는 고유 주소값이 모두 135072304이다. 즉 모두 같은 객체를 가리키고 있다는 말이다. 만약 4나 5같은 다른 값을 입력하면 다른 객체이기 때문에 다른 주소값이 출력 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> a=3
>>> id(3)
135072304

>>>id(a)
135072304

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

>>> id(4)
135072292