Py) 기초 - 기본함수

Py) 기초 - 기본함수

파이썬 기반 데이터분석을 위하여 기본함수(또는 내장함수)에 대해 알아본다.


개요

파이썬을 처음 실행시켰을 때 아무런 조치 없이(라이브러리 호출 없이) 사용 가능한 함수를 보통 기본함수(또는 내장함수)라고 부른다. 데이터분석을 위해 향후 PandasNumPy 같은 전문적인 라이브러리를 다루게 되면서 기본함수를 별로 사용하지는 않지만 그래도 여러 기본함수 중에서 데이터 분석시 사용성이 높은 함수를 추려보았다.

다음은 이번 포스팅에서 다룰 함수 목록이다.

● str(): 입력 값을 문자로 변환
● int(): 입력 값을 정수로 변환
● len(): 입력된 객체의 원소 개수 반환
● print(): 입력된 값을 콘솔(console)에 출력
● range(): 등차수열 생성
● round(): 반올림
● max(): 최대값 계산
● min(): 최소값 계산
● sum(): 합 계산
● dir(): 객체의 어트리뷰트, 메서드 목록 반환
● help(): 객체의 도움말 문서 출력

상세

상기에 언급한 함수를 보다 상세하게 알아보자.

str()

문자가 아닌 것을 문자로 바꿔주는 함수.

str() 함수는 주로 숫자를 문자로 바꾸어 문자열 관련 연산을 실시하는데 사용한다. 그런데 리스트나 튜플 같은 객체를 입력으로 넣게 되면 에러 또는 경고가 발생하는 것이 아닌 결과 그대로를 문자로 변환한다.

1
2
3
4
5
str(123)
## '123'

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

int()

정수가 아닌 것을 정수로 바꿔주는 함수.

int() 함수는 주로 실수(float)의 정수부를 취하기 위해 사용하거나 ‘123’ 같은 겉보기에는 숫자이지만 실제 문자열로 처리가 되고있는 원소를 정수로 바꿀 때 사용한다.

1
2
3
4
5
int("123")
## 123

int(123.456)
## 123

하지만 리스트 같은 객체를 입력으로 넣게되면 다음과 같은 에러가 발생한다.

1
2
3
4
5
6
7
int([1.2, 2.4, 3.6])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_20412\2528074401.py in <module>
----> 1 int([1.2, 2.4, 3.6])

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

len()

객체 내부의 원소 개수를 확인하기 위해 사용하는 함수.

len() 함수는 리스트나 튜플 같은 객체의 원소 개수를 확인하기 위해 사용하며 딕셔너리 객체에 사용할 경우 객체의 키(key) 개수를 반환한다.

1
2
3
4
5
6
7
8
9
10
11
len([1, 2, 3])
## 3

len((2, 3))
## 2

len([[1, 2], [3, 4], [5, 6, 7]])
## 3

len(dict(a = 1, b = 2, c = 3))
## 3

그리고 len() 함수는 Pandas 라이브러리의(후속 포스팅에서 다룰 예정) 데이터프레임(DataFrame) 객체의 행(row) 개수를 반환해준다.

1
2
3
4
5
import pandas as pd
df = pd.DataFrame({"col1": [1, 2, 3],
"col2": [4, 5, 6]})
len(df)
3

print()

입력된 값을 콘솔(console)에 출력(print)해주는 함수.

반복문이나 사용자 정의 함수 사용시 내부의 연산 내용 일부나 참조할만한 내용을 출력하여 확인하는 용도로 사용하는 경우가 많다. 그리고 이 함수는 특이하게 입력값을 출력하기 위해 반드시 하나의 문자열로 값을 넘겨줄 필요가 없다. 내용이 많을 경우 쉼표로만 그 값을 구분해줘도 알아서 이쁘게 출력해준다.

1
2
3
4
5
6
7
8
9
10
11
print(123)
## 123

print("abc")
## abc

print([1, 2, 3])
## [1, 2, 3]

print("aa", "bb", [1, 2, 3])
## "aa" "bb" [1, 2, 3]

참고로 주피터 노트북을 사용한다면 보통 print() 함수를 사용해서 결과를 출력하기 보다는 그냥 셀의 실행 결과를 확인하기 때문에 각종 IDE에서 py파일을 구동하는 것 대비 적게 사용한다고 할 수 있다.
※ IDE(Integrated Development and Learning Environment): 프로그래머가 소프트웨어 코드를 효율적으로 개발하도록 돕는 소프트웨어 애플리케이션

range()

등차수열을 생성하는 함수.

주로 반복문의 반복 횟수를 지정하기 위해 사용한다. 숫자를 하나만 쓰면 0부터 해당 숫자 만큼 1씩 증가하는 등차수열을 생성하며 숫자 두 개를 입력으로 할 경우 첫 번째 숫자부터 두 번째 숫자 직전까지 1씩 증가하는 등차수열을 생성하고 숫자 세 개를 입력으로 할 경우 마지막 숫자는 증분. 즉, 공차(common difference)를 의미한다. 그리고 range() 함수의 결과는 그냥 출력하면 결과를 알아보기 힘들기 때문에 list() 함수를 감싸서 그 결과를 확인하는 것을 추천한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
range(3)
## range(0, 3)

list(range(3))
## [0, 1, 2]

list(range(2, 6))
## [2, 3, 4, 5]

list(range(1, 40, 8))
## [1, 9, 17, 25, 33]

for n in range(-3, 0):
print(n)

## -3
## -2
## -1

round()

숫자를 반올림하는 함수.

첫 번째 입력값은 반올림할 숫자이고 두 번째 값은 반올림 기준 위치를 의미한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
round(123.456)
## 123

round(123.456, 1)
## 123.5

round(123.456, 2)
## 123.46

round(123.456, -1)
## 120.0

round(123.456, -2)
## 100.0

max() / min()

입력 값의 최대값/최소값을 산출하는 함수.

리스트 튜플 등 다양한 객체를 입력받을 수 있지만 문자열 또한 에러 없이 입력을 받고 그 결과를 반환한다. 특히 딕셔너리 객체를 넣게되면 키를 대상으로 함수가 동작한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
max([100, 200, 300])
## 300

max({100, 200, 300})
## 300

max(["a", "z", "d"])
## 'z'

max({"a": [100, 200, 300], "b": [50, 60, 70]})
## 'b'

max({"d": [100, 200, 300], "c": [50, 60, 70]})
## 'd'

max("abcd")
## 'd'

min([100, 200, 300])
## 100

min({100, 200, 300})
## 100

min(["a", "z", "d"])
## 'a'

min({"a": [100, 200, 300], "b": [50, 60, 70]})
## 'a'

min({"d": [100, 200, 300], "c": [50, 60, 70]})
## 'c'

sum()

입력값의 합을 반환하는 함수.

숫자 또는 논리값을 원소로 하는 객체가 입력될 경우 해당 원소를 모두 더한 값을 반환한다. 딕셔너리의 경우 키가 숫자로 지정되어있을 경우 키를 모두 더한 값을 반환한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sum([1, 2, 3])
## 6

sum([True, False, True])
## 2

sum({1, 2, 3})
## 6

sum((1, 2, 3))
## 6

sum({1: [100, 200], 2: 300})
## 3

dir()

함수에 입력된 객체의 어트리뷰트, 메서드 목록을 반환하는 함수.

특정 객체의 어트리뷰트나 메서드 목록을 확인하기 위해 종종 사용하는 함수이며 IDE의 자동완성이나 추천기능의 도움을 받기 어려운 상황(자격증 시험 등)에 요긴하게 쓰인다. 참고로 주피터 노트북을 사용하는 경우 입력값 없이 함수를 실행하면 각 셀의 입력(언더바와 i 이후 실행 번호)과 출력(언더바 이후 실행 번호)객체를 조회할 수 있다.

보통 객체를 입력하게 되면 언더바 2개로 둘러싸인 메서드도 나오는데 이를 특별한 메서드(special method)라고 불린다. 이러한 특별한 메서드는 파이썬 인터프리터가 자동으로 호출하며, 해당 객체의 내부 동작을 정의하고 제어하는데 사용된다.

예시로, 리스트 객체에서 len() 메서드는 해당 리스트의 길이를 반환하는 역할을 한다. 해당 메서드는 len() 함수를 호출할 때 자동으로 호출된다. 그리고 getitem() 메서드는 리스트의 특정 요소에 접근하는 데 사용되며, setitem() 메서드는 해당 리스트의 요소를 수정하는 데 사용된다.

dir() 함수를 사용하여 리스트 객체의 메서드를 확인할 때, 이러한 특별한 메서드는 리스트 객체의 일반 메서드와 함께 표시되고 보통 파이썬 내장 객체의 동작을 커스터마이징하거나 확장하는 데 사용되기 때문에 해당 메서드를 제외한 나머지를 보고자 한다면 리스트 내포(comprehension, 컴프리헨션)를 활용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
dir([1, 2])
## ['__add__',
## '__class__',
## '__class_getitem__',
## '__contains__',
## '__delattr__',
## '__delitem__',
## ...
## 'insert',
## 'pop',
## 'remove',
## 'reverse',
## 'sort']

[mt for mt in dir([1, 2]) if mt[:2] != "__"]
['append',
'clear',
'copy',
'count',
'extend',
'index',
'insert',
'pop',
'remove',
'reverse',
'sort']

help()

객체의 도움말 문서를 출력하는 함수.

좀 더 정확하게는 객체의 “Docstring”을 출력한다. help() 함수를 사용하여 입력된 객체의 특징과 사용법 등 다양한 정보를 얻을 수 있으며, 주피터 노트북 환경에서 “?” 뒤에 함수/메서드/클래스를 사용하면 이와 비슷한 결과를 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
help(sum)
## Help on built-in function sum in module builtins:
##
## sum(iterable, /, start=0)
## Return the sum of a 'start' value (default: 0) plus an iterable of numbers
##
## When the iterable is empty, return the start value.
## This function is intended specifically for use with numeric values and may
## reject non-numeric types.

?sum
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×