Real Late Starter

[Python] 내장함수 본문

Python

[Python] 내장함수

조슈아박 2020. 3. 3. 00:01

파이썬 프로그래밍에서는 함수나 기능 등을 직접 만들어서 사용할 수도 있겠지만 전문가나 고급 프로그래머가 미리 만들어논 기능들을 사용하여 간편하게 프로그래밍을 할 수 있다. 이러한 것을 활용하면 생산성 및 품질 향상을 기대할 수 있다.
이런 기능들을 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)을 들으며 정리한 내용입니다.