Real Late Starter
[Python] 내장함수 본문
파이썬 프로그래밍에서는 함수나 기능 등을 직접 만들어서 사용할 수도 있겠지만 전문가나 고급 프로그래머가 미리 만들어논 기능들을 사용하여 간편하게 프로그래밍을 할 수 있다. 이러한 것을 활용하면 생산성 및 품질 향상을 기대할 수 있다.
이런 기능들을 API(Application Programming Interface)이라고한다. 따라서 자신이 프로그래밍을 할 때는 미리 만들어진 API가 있는지 확인하고 코딩을 하는 습관을 기르면 좋다. 이미 잘 만들어진 함수가 있는데 자신이 직접 프로그래밍하면서 시간을 들일 필요가 없기 때문이다.
파이썬은 다양한 목적의 내장함수를 제공한다.
내장함수는 다음과 같이 나누어 볼 수 있다.
- 수치형 데이터 조작을 위한 함수
- 집합과 원소 사이의 관계를 다루는 함수
- 각종 변환 함수
1. 수치 연산 함수
1) abs()
- 인자로 숫자를 전달하면 그 숫자의 절대값을 반환하는 함수
2) divmod()
- 첫 번째 인자를 두 번째 인자로 나눴을 때의 몫과 나머지를 튜플 객체로 반환하는 함수
3) pow()
- 첫 번째로 전달된 인자 값에 대해 두 번째로 전달된 인자 값으로 제곱한 결과를 반환하는 함수
data_list = [1,2,3,4,5]
print("list(map(lambda x: pow(x, 2), {0})) => {1}".format(data_list,
list(map(lambda x: pow(x, 2),
data_list))))
>>> list(map(lambda x: pow(x, 2), [1, 2, 3, 4, 5])) => [1, 4, 9, 16, 25]
2. 시퀀스형 / 반복 가능한 자료형을 다루는 함수
1) all()
- 반복 가능한 자료형인 List, Tuple, Set, Dictionary, 문자열 등을 인자로 전달하여 항목 모두가 True로 평가되면 True를 반환하고, False로 평가되는 항목이 하나라도 있으면 False를 반환하는 함수
2) any()
- 반복 가능한 자료형인 List, Tuple, Set, Dictionary, 문자열 등을 인자로 전달하여 항목 모두가 False로 평가되면 False를 반환하고, True로 평가되는 항목이 하나라도 있으면 True를 반환하는 all()에 반대되는 함수
3) enumerate()
- List, Tuple, 문자열과 같은 시퀀스형을 입력받아 인덱스를 포함하는 튜플 객체를 항목으로 구성하는 enumerate 객체를 반환하는 함수
data_list = [10, 20, 30, 40, 50]
for idx, val in enumerate(data_list):
print("data_list[{0}]: {1}".format(idx, val))
print('-' * 25)
for obj in enumerate(data_list):
print("{0}: {1}, {2}".format(type(obj), obj[0], obj[1]))
print('-' * 25)
for obj in enumerate(data_list):
print("{0}: {1}, {2}".format(type(obj), *obj))
# 출력
data_list[0]: 10
data_list[1]: 20
data_list[2]: 30
data_list[3]: 40
data_list[4]: 50
-------------------------
<class 'tuple'>: 0, 10
<class 'tuple'>: 1, 20
<class 'tuple'>: 2, 30
<class 'tuple'>: 3, 40
<class 'tuple'>: 4, 50
-------------------------
<class 'tuple'>: 0, 10
<class 'tuple'>: 1, 20
<class 'tuple'>: 2, 30
<class 'tuple'>: 3, 40
<class 'tuple'>: 4, 50
4) filter()
- 조건에 해당하는 항목을 걸러내는 함수
- 첫 번째 매개변수는 boolean 형을 반환하는 함수를 취한다. 두 번째는 반복 가능한 자료형을 받는다.
numbers = [x for x in range(1,11)]
ret_val = filter(lambda x: x % 2 == 0, numbers)
print("{0}, {1}".format(type(ret_val), list(ret_val)))
# 출력
<class 'filter'>, [2, 4, 6, 8, 10]
5) list(), tuple(), set(), dict()
- 반복 가능한 자료형을 인자로 전달 받아 해당 자료형으로 반환하는 함수들이다.
data_str = 'Hello'
data_list = list(data_str)
print(data_list)
data_set = set(data_list)
print("set({0}) => {1} {2}".format(data_list, type(data_set), data_set))
data_dict = dict(enumerate(data_set))
print("dict({0}) => {1} {2}".format(data_set, type(data_dict), data_dict))
# 출력
['H', 'e', 'l', 'l', 'o']
set(['H', 'e', 'l', 'l', 'o']) => <class 'set'> {'H', 'l', 'o', 'e'}
dict({'H', 'l', 'o', 'e'}) => <class 'dict'> {0: 'H', 1: 'l', 2: 'o', 3: 'e'}
6) map()
- 두 번째 인자로 반복 가능한 자료형을 전달 받아 자료형의 각 항목에 대해 첫 번째 인자로 전달 받은 함수를 적용한 결과를 맵 개체로 반환하는 함수
data_list = list("abcdef")
result = list(map(lambda x: x.upper(), data_list))
print(result)
# 출력
['A', 'B', 'C', 'D', 'E', 'F']
7) max(), min()
- 최대값과 최소값을 구하는 함수
8) range()
- 첫 번째 인자로 전달된 시작 값, 두 번째 인자로 전달된 종료 값, 세 번째로 증감치를 받아 시퀀스형 객체를 생성하는 함수
9) sorted()
- 반복 가능한 자료형을 인자로 전달받아 항목들로부터 정렬된 리스트를 생성해 반환하는 함수
data_list = [3, 8, 12 , 2, 5, 11]
# 오름차순으로 정렬된 리스트 객체를 생성해 반환
asc_result = sorted(data_list)
# 내림차순으로 정렬된 리스트 객체를 생성해 반환
desc_result = list(reversed(asc_result))
print(asc_result)
print(desc_result)
# 출력
[2, 3, 5, 8, 11, 12]
[12, 11, 8, 5, 3, 2]
10) zip() : 둘 이상의 반복 가능한 자료형을 인자로 전달받아, 동일 위치의 항목을 묶어 튜플 항목으로 구성하는 zip객체를 생성하는 함수. 인자로 전달된 객체는 동일 자료형이면서, 항목의 개수가 같아야한다.
data_list1 = [1,2,3]
data_list2 = [4,5,6]
data_list3 = ['a','b','c']
print("list(zip({0}, {1})) => {2}".format(data_list1,
data_list2,
list(zip(data_list1, data_list2))))
print("list(zip({0}, {1}, {2})) => {3}".format(data_list1,
data_list2,
data_list3,
list(zip(data_list1, data_list2, data_list3))))
# 출력
list(zip([1, 2, 3], [4, 5, 6])) => [(1, 4), (2, 5), (3, 6)]
list(zip([1, 2, 3], [4, 5, 6], ['a', 'b', 'c'])) => [(1, 4, 'a'), (2, 5, 'b'), (3, 6, 'c')]
3. 변환 함수
1) chr(), ord(), hex()
- chr() : 정수 형태의 유니코드 값을 인자로 전달받아 해당 코드의 문자를 반환하는 함수
- ord() : 문자를 인자로 전달 받아 유니코드 값(10진 정수)을 반환하는 함수
- hex() : 10진 정수 값을 인자로 전달 받아 16진수로 변환된 값을 반환하는 함수
print(chr(65), chr(97), chr(0xac00))
# 출력
>>> A a 가
print(ord("A"), ord("a"), ord("가"))
# 출력
>>> 65 97 44032
print(hex(ord('가')))
# 출력
>>> 0xac00
2) int(), float(), str()
- int() : 인자로 전달된 숫자 형식의 문자열, 부동소수점 숫자를 정수로 변환한 값을 반환하는 함수
- float() : 인자로 전달된 숫자 형식의 문자열, 정수를 부동소수점 숫자로 변환한 값을 반환하는 함수
- str() : 인자로 전달된 객체에 대한 문자열 변환 값을 반환하는 함수
4. 객체 조사를 위한 함수
1) dir ()
- 인자로 전달된 객체가 가지고 있는 변수, 메서드와 같은 속성 정보를 리스트 객체로 반환, 인자를 전달하지 않고 호출하면 현재 지역 스코프에 대한 정보를 리스트 객체로 반환
data_dict = {'k1':10, 'k2':20, 'k3':30}
print("dir(data_dict) => {0}".format(dir(data_dict)))
# 출력
dir(data_dict) =>
['__class__', '__contains__', '__delattr__',
'__delitem__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__getitem__',
'__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__',
'__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__',
'__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items',
'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
2) globals(), locals()
- globals() : 현재의 전역 심볼 테이블을 보여주는 딕셔너리를 반환하는 함수. 전역변수와 함수, 클래스의 정보를 포함.
- locals() : 현재의 지역 심볼 테이블을 보여주는 딕셔너리를 반환하는 함수. 매개변수를 포함한 지역변수와 중첩함수의 정보를 포함
3) id()
- 인자로 전달된 객체의 고유 주소(참조값)를 반환하는 함수
4) isinstance(), issubclass()
- isinstance() : 첫 번째 인자로 전달된 객체가 두 번째 인자로 전달된 클래스의 인스턴스인지에 대한 여부를 T/F로 반환하는 함수
- issubclass() : 첫 번째 인자로 전달된 클래스가 두 번째 인자로 전달된 클래스의 서브클래스인지에 대한 여부를 T/F로 반환하는 함수
class Parent:
pass
class Child(Parent):
pass
p = Parent()
c = Child()
print("c 객체는 Parent 클래스의 인스턴스입니까? {0}".format(isinstance(c, Parent)))
print("p 객체는 Child 클래스의 인스턴스입니까? {0}".format(isinstance(p, Child)))
print("Child 클래스는 Parent 클래스의 서브클래스입니까? {0}".format(issubclass(Child, Parent)))
# 출력
c 객체는 Parent 클래스의 인스턴스입니까? True
p 객체는 Child 클래스의 인스턴스입니까? False
Child 클래스는 Parent 클래스의 서브클래스입니까? True
5. 실행 관련 함수
1) eval()
- 실행 가능한 표현식의 문자열을 인자로 전달받아 해당 문자열의 표현식을 실행한 결과값을 반환하는 함수
expr = '2 + 5 * 3'
print("{0} => {1}".format(expr, eval(expr)))
# 출력
>>> 2 + 5 * 3 => 17
expr = "'hello, python!'.upper()"
print("{0} => {1}".format(expr, eval(expr)))
# 출력
>>> 'hello, python!'.upper() => HELLO, PYTHON!
이 포스트는 SW Expert Academy(https://swexpertacademy.com/)에서 파이썬 프로그래밍기초(1)을 들으며 정리한 내용입니다.
'Python' 카테고리의 다른 글
[Python] 객체지향(Object Oriented Programming)의 이해 (0) | 2020.03.05 |
---|---|
[Python] Dictionary 값 value 로 정렬하기 (0) | 2020.03.04 |
[Python] 예외 처리 (0) | 2020.03.03 |