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