
파이썬 내장 함수
내장 함수란?
앞선 연구 노트에서 파이썬의 내장 함수를 몇 가지 사용한 것을 확인할 수 있다.
대표적인 예로 print, del, type 등이 있다.
이러한 파이썬 내장 함수는 외부 모듈과 달리 import가 필요하지 않기 때문에 아무런 설정 없이 바로 사용할 수 있다.
이제부터 내장 함수에 대하여 알아보자.
내장 함수의 종류
○ abs
abs(x)는 어떤 숫자를 입력받았을 때 그 숫자의 절댓값을 리턴하는 함수이다.
## abs 예제
abs(3)
→ 3
abs(-3)
→ 3
abs(-1.2)
→ 1.2
○ all
all(x)는 반복 가능한 데이터 x를 입력값으로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 리턴한다.
## all 예제
all([1, 2, 3])
→ True
all([1, 2, 3, 0])
→ False
파이썬에서 거짓으로 간주하는 값들의 예시로 0, None, 빈 문자열, 빈 리스트 등이 있다.
리스트 자료형 [1, 2, 3]은 모든 요소가 참이므로 True를 출력하고 [1, 2, 3, 0] 중에서 0 은 거짓이므로 False를 리턴한다.
○ any
any(x)는 반복 가능한 데이터 x를 입력으로 받아 x의 요소 중 하나라도 참이 있으면 True를 리턴하고
x가 모두 거짓일 때만 False를 리턴한다. 즉, all(x)의 반대로 작동한다.
## any 예제
any([1, 2, 3, 0])
→ True
any([0, " "])
→ False
위에서 확인한 거짓으로 인식하는 값인 0과 빈 문자열을 False로 인식한다.
리스트 자료형 [1, 2, 3, 0] 중 1,2,3,이 참이므로 True, [0, ""]의 요소 0과 ""은 모두 거짓이므로 False를 리턴한다.
○ chr
chr(i)는 유니코드 숫자 값을 입력받아 그 코드에 해당하는 문자를 리턴하는 함수이다.
## chr 예제
chr(97)
→ 'a' # 아스키 코드 97은 소문자 a
chr(48)
→ '0' # 아스키 코드 48은 숫자 0
○ dir
dir은 객체가 지닌 변수나 함수를 보여 주는 함수이다. 다음 예는 리스트와 딕셔너리가 지닌 함수(메서드)를 보여 주는 예이다.
## dir 예제
dir([1, 2, 3])
→ ['__add__', '__class__', '__class_getitem__' ...]
dir({'1':'a'})
→ ['__class__', '__class_getitem__', '__contains__' ...]
[1, 2, 3]은 리스트 객체이며, dir() 함수는 이 리스트 객체가 가진 모든 메서드와 속성을 보여준다.
출력된 메서드 중 __add__는 '+' 연산자 사용 시 호출되는 메서드이고, __class__는 객체의 클래스 정보를 저장하는 속성이다.
이외에도 append(), extend(), insert() 등 리스트에서 사용할 수 있는 다양한 메서드들이 포함되어 있다.
딕셔너리 객체 {'1':'a'}에 대해서도 마찬가지로 딕셔너리가 가진 모든 메서드와 속성을 보여준다.
__contains__는 in 연산자 사용 시 호출되는 메서드이다.
이외에도 keys(), values(), items() 등 딕셔너리에서 사용할 수 있는 메서드들이 포함되어 있다.
dir() 함수는 함수 도움말과 같은 시스템에 사용하기 용이하면서, 보통 시스템 명령어인 help기능을 대응하는 역할을 한다.
해당 객체가 어떤 기능을 수행할 수 있는지 파악하는 데 도움이 된다.
※ 객체에 대한 정보 열람, 기능 수행에 대해 정보를 얻을 수 있음
○ divmod
divmod(a, b)는 2개의 숫자 a, b를 입력으로 받는다. 그리고 a를 b로 나눈 몫과 나머지를 튜플로 리턴한다.
앞의 숫자 2가 몫을 의미하고 뒤의 숫자 1이 나머지를 의미한다.
## divmod 예제
divmod(7, 3)
→ (2, 1)
○ enumerate
enumerate는 ‘열거하다’라는 뜻으로 이 함수는 순서가 있는 데이터(리스트, 튜플, 문자열)를 입력으로 받아
인덱스 값을 포함하는 enumerate 객체를 리턴한다.
## enumerate 예제
for i, name in enumerate(['body', 'foo', 'bar']):
... print(i, name)
...
0 body
1 foo
2 bar
인덱스 값과 함께 body, foo, bar가 순서대로 출력되었다.
즉, enumerate를 for 문과 함께 사용하면 자료형의 현재 순서index와 그 값을 쉽게 알 수 있다.
○ eval
eval(expression)은 문자열로 구성된 표현식을 입력으로 받아 해당 문자열을 실행한 결괏값을 리턴하는 함수이다.
## eval 예제
eval('1+2')
→ 3
eval("'hi' + 'a'")
→ 'hia'
eval('divmod(4, 3)')
→ (1, 1)
보통 eval은 입력받은 문자열로 파이썬 함수나 클래스를 동적으로 실행하고 싶을 때 사용한다.
○ filter
filter 함수는 첫 번째 인수로 함수, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 데이터를 받는다.
그리고 반복 가능한 데이터의 요소 순서대로 함수를 호출했을 때 리턴값이 참인 것만 묶어서(걸러 내서) 리턴한다.
## 참인 값 리턴 예제
def positive(l):
result = [] #반환 값이 참인 것만 걸러내서 저장할 변수
for i in l:
if i > 0:
result.append(i) #리스트에 i추가
return result
print(positive([1, -3, 2, 0, -5, 6]))
→ [1, 2, 6]
즉 위에서 만든 positive 함수는 리스트를 입력값으로 받아 각각의 요소를 판별해서 양수 값만 돌려주는 함수이다.
filter 함수를 사용하면 다음과 같이 간단하게 작성할 수 있다.
## filter 예제
def positive(x):
return x > 0
print(list(filter(positive, [1, -3, 2, 0, -5, 6])))
→ [1, 2, 6]
여기에서는 두 번째 인수인 리스트의 요소들이 첫 번째 인수인 positive 함수에 입력되었을 때 반환 값이 참인 것만
묶어서 돌려준다. 앞의 예제에서는 1, 2, 6만 양수여서 x > 0 문장이 참이 되므로 [1, 2, 6]이라는 결괏값을 돌려주게 된 것이다.
앞의 함수 lambda를 사용하여 더 간결하게 나타내 보자.
## filter와 lambda 사용 예제
list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6]))
→ [1, 2, 6]
○ hex
hex(x)는 정수를 입력받아 16진수 문자열로 변환하여 리턴하는 함수이다.
## hex 예제
hex(234)
→ '0xea'
hex(3)
→ '0x3'
○ id
id(object)는 객체를 입력받아 객체의 고유 주솟값(레퍼런스)을 리턴하는 함수이다.
## id 예제
id(3)
→ 140725908866024
id(a)
→ 140725908866024
a = b
id(b)
→ 140725908866024
셋 모두 고유 주소 값이 140725908866024이다. 여기서 3, a, b 모두 같은 객체를 가리키고 있다.
○ input
input([prompt])는 사용자 입력을 받는 함수이다. 입력 인수로 문자열을 전달하면 그 문자열은 프롬프트가 된다.
## input 예제
a = input()
hi
→ a
'hi'
b = input("Enter: ")
→ Enter: hi
b
→ 'hi'
매개변수로 문자열을 주면 b = input("Enter: ")에서 볼 수 있듯이 그 문자열은 프롬프트가 된다.
입력받은 문자열을 확인해 보면 'hi'가 나오는 것을 확인할 수 있다.
○ int
int(x)는 문자열 형태의 숫자나 소수점이 있는 숫자를 정수로 리턴하는 함수이다. 만약 정수가 입력되면 그대로 리턴한다.
## int 예제
int('3')
→ 3
int('3.4')
→ 3
int(x, radix)는 radix 진수로 표현된 문자열 x를 10진수로 변환하여 리턴한다.
예를 들어 2진수로 표현된 '11'의 10진수 값은 다음과 같이 구할 수 있다.
16진수로 표현된 1A의 10진수 값도 다음과 같이 구할 수 있다.
## int(x, radix) 예제
int('11', 2)
→ 3
int('1A', 16)
→ 26
○ isinstance
isinstance(object, class) 함수는 첫 번째 인수로 객체, 두 번째 인수로 클래스를 받는다.
입력으로 받은 객체가 그 클래스의 인스턴스인지를 판단하여 참이면 True, 거짓이면 False를 리턴한다.
## isinstance 예제
class Person: pass
a = Person()
isinstance(a, Person)
→ True
b = 3
isinstance(b, Person)
→ False
위 예제는 a가 Person 클래스가 만든 인스턴스임을 확인시켜 준다.
b는 Person 클래스가 만든 인스턴스가 아니므로 False를 리턴한다.
○ len
len(s)는 입력값 s의 길이(요소의 전체 개수)를 리턴하는 함수이다.
## len 예제
len("python")
→ 6
len([1, 2, 3])
→ 3
len((1, 'a'))
→ 2
○ list
list(iterable)은 반복 가능한 자료형 s를 입력받아 리스트로 만들어 리턴하는 함수이다.
list 함수에 리스트를 입력으로 주면 똑같은 리스트를 복사하여 돌려준다.
## list 예제
list("python")
→ ['p', 'y', 't', 'h', 'o', 'n']
list((1, 2, 3))
→ [1, 2, 3]
a = [1, 2, 3]
b = list(a)
b
→ [1, 2, 3]
○ map
map(f, iterable)은 함수(f)와 반복 가능한 데이터를 입력으로 받는다.
map은 입력받은 데이터의 각 요소에 함수 f를 적용한 결과를 리턴하는 함수이다.
## two_times 함수
def two_times(numberlist):
result = []
for number in numberlist:
result.append(number*2)
return result
result = two_times([1, 2, 3, 4])
print(result)
→ [2, 4, 6, 8]
앞의 예제를 해석해 보면 리스트의 첫 번째 요소인 1이 two_times 함수의 입력값으로 들어가고 1*2의 과정을 거쳐 2가 된다.
다음으로 리스트의 두 번째 요소인 2가 2*2의 과정을 거쳐 4가 된다. 따라서 결괏값 리스트는 이제 [2, 4]가 된다.
총 4개의 요솟값이 모두 수행되면 마지막으로 [2, 4, 6, 8]을 돌려준다. 이것이 map 함수가 하는 일이다.
위 예제는 map 함수를 사용하면 아래 처럼 바꿀 수 있다.
## map 예제
def two_times(x): return x*2
list(map(two_times, [1, 2, 3, 4]))
→ [2, 4, 6, 8]
앞의 예제는 lambda를 사용하면 좀 더 간략하게 만들 수 있다.
## map과 lambda 사용 예제
list(map(lambda a: a*2, [1, 2, 3, 4]))
→ [2, 4, 6, 8]
○ max
max(iterable)은 인수로 반복 가능한 데이터를 입력받아 그 최댓값을 리턴하는 함수이다.
## max 예제
max([1, 2, 3])
→ 3
max("python")
→ 'y'
○ min
min(iterable)은 max 함수와 반대로, 인수로 반복 가능한 데이터를 입력받아 그 최솟값을 리턴하는 함수이다.
## min 예제
min([1, 2, 3])
→ 1
min("python")
→ 'h'
○ oct
oct(x)는 정수를 8진수 문자열로 바꾸어 리턴하는 함수이다.
## oct 예제
oct(34)
→ '0o42'
oct(12345)
→ '0o30071'
○ open
open(filename, [mode])은 '파일 이름’과 ‘읽기 방법’을 입력받아 파일 객체를 리턴하는 함수이다.
읽기 방법(mode)을 생략하면 기본값인 읽기 모드(r)로 파일 객체를 만들어 리턴한다.
## open 예제
f = open("파일명", 'w') #쓰기 모드로 파일 열기
f = open("파일명", 'r') #읽기 모드로 파일 열기
f = open("파일명", 'a') #추가 모드로 파일 열기
f = open("파일명", 'b') #바이너리 모드로 파일 열기
'b'는 w, r, a와 함께 사용한다. "rb" 모드에 입력하면 '바이너리 읽기 모드'를 의미한다.
○ ord
ord(c)는 문자의 유니코드 숫자 값을 리턴하는 함수이다.
## ord 예제
ord('a')
→ 97
ord('0')
→ 48
○ pow
pow(x, y)는 x를 y제곱한 결괏값을 리턴하는 함수이다.
## pow 예제
pow(2, 4)
→ 16
pow(3, 3)
→ 27
○ range
range([start,] stop [,step])은 for 문과 함께 자주 사용하는 함수이다.
이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 리턴한다.
1. 인수가 하나일 경우
시작 숫자를 지정해 주지 않으면 range 함수는 0부터 시작한다.
## range 예제1
list(range(5))
→ [0, 1, 2, 3, 4]
2. 인수가 2개인 경우
입력으로 주어지는 2개의 인수는 시작 숫자와 끝 숫자를 나타낸다. 단, 끝 숫자는 해당 범위에 포함되지 않는다.
## range 예제2
list(range(5, 10))
→ [5, 6, 7, 8, 9]
3. 인수가 3개인 경우
세 번째 인수는 숫자 사이의 거리를 말한다.
## range 예제3
list(range(1, 10, 2))
→ [1, 3, 5, 7, 9]
list(range(1, -10, -1))
→ [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
○ round
round(number[, ndigits])함수는 숫자를 입력받아 반올림해 주는 함수이다.
세 번째 줄과 같이 실수 5.678을 소수점 2자리까지만 반올림하여 표시할 수도 있다.
## round 예제
round(4.6)
→ 5
round(4.2)
→ 4
round(5.678, 2)
→ 5.68
round 함수의 두 번째 매개변수의 의미는 반올림하여 표시하고 싶은 소수점 자리수이다.
○ sorted
sorted(iterable)는 입력 데이터를 정렬한 후 그 결과를 리스트로 리턴하는 함수이다.
리스트 자료형에도 sort 함수가 있다. 하지만 리스트 자료형의 sort 함수는 리스트 객체 그 자체를 정렬할 뿐
정렬된 결과를 리턴해주지 않는다.
## sorted 예제
sorted([3, 1, 2])
→ [1, 2, 3]
sorted(['a', 'c', 'b'])
→ ['a', 'b', 'c']
○ str
str(object)는 문자열 형태로 객체를 변환하여 리턴하는 함수이다.
## str 예제
str(3)
→ '3'
str('hi')
→ 'hi'
str('hi'.upper())
→ 'HI'
○ sum
sum(iterable)은 입력 데이터의 합을 리턴하는 함수이다.
## sum 예제
sum([1, 2, 3])
→ 6
sum((4, 5, 6))
→ 15
○ tuple
tuple(iterable)은 반복 가능한 데이터를 튜플로 바꾸어 리턴하는 함수이다. 만약 입력이 튜플인 경우에는 그대로 리턴한다.
## tuple 예제
tuple("abc")
→ ('a', 'b', 'c')
tuple([1,2,3])
→ (1, 2, 3)
tuple((1,2,3,))
→ (1, 2, 3)
○ type
type(object)는 입력값의 자료형이 무엇인지 알려 주는 함수이다.
## type 예제
type("abc")
→ <class 'str'> # abc는 문자열 자료형
type([])
→ <class 'list'> # [ ]는 리스트 자료형
type(open("test",'w'))
→ <class '_io.TextIOWrapper'> # 파일 자료형
○ zip
zip(*iterable)은 동일한 개수로 이루어진 데이터들을 묶어서 리턴하는 함수이다.
다음 예제를 살펴보고 이해해 보자.
## zip 예제
list(zip([1,2,3], [4,5,6]))
→ [(1, 4), (2, 5), (3, 6)]
list(zip([1,2,3], [4,5,6], [7,8,9]))
→ [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
list(zip("abc", "def"))
→ [('a', 'd'), ('b', 'e'), ('c', 'f')]
※ 여기서 사용한 *iterable은 반복 가능한 자료형 여러 개를 입력할 수 있다는 의미이다.
이렇게 파이썬 내장 함수에 대하여 알아보았다.
함수의 종류도 많고 내용도 많으니 반복 연습이 필요해 보인다.

TEL (062-226-1777, 010-9891-7244), E-mail (ipmes@ipmes.co.kr)
임베디드 시스템 | PCB 설계 제작 | 펌웨어 개발 | 신호처리 | 응용프로그램
'연구노트 > Python' 카테고리의 다른 글
| 파이썬 프로그래밍 기초(1) (0) | 2025.04.30 |
|---|---|
| 파이썬 라이브러리 (2) | 2025.04.30 |
| Python 예외 처리 (0) | 2025.04.30 |
| 파이썬 패키지 (0) | 2025.04.21 |
| 파이썬 모듈 (0) | 2025.04.18 |