목차
내장 함수(Built-in Function) 는 파이썬에서 기본으로 제공하는 함수이다.
별도의 모듈을 불러오지 않아도 바로 사용할 수 있다.
예를 들어 지금까지 사용했던
print()
type()
input()
len()
등도 모두 내장 함수이다.
print("Hello")
처럼 별도의
import
없이 바로 사용할 수 있다는 것이 특징이다.
내장 함수는 파이썬에서 기본적으로 제공하므로
import없이 사용할 수 있다.
absabs()는 숫자의 절댓값을 반환한다.
print(abs(3))
print(abs(-3))
print(abs(-1.5))
실행 결과
3
3
1.5
즉,
3 → 3
-3 → 3
-1.5 → 1.5
처럼 음수도 양수 값으로 반환한다.
allall()은 반복 가능한 데이터의 값이 모두 참인지 확인한다.
print(all([1, 2, 3]))
실행 결과
True
모든 값이 참이기 때문이다.
하지만
print(all([1, 2, 3, 0]))
실행 결과
False
0은 False로 판단되기 때문이다.
모두 True → True
하나라도 False → False
빈 데이터는
print(all([]))
True
를 반환한다.
anyany()는 all()과 반대로 하나라도 참이 있는지 확인한다.
print(any([0, 0, 1]))
실행 결과
True
1이라는 참 값이 하나 존재하기 때문이다.
print(any([0, ""]))
실행 결과
False
모든 값이 거짓이기 때문이다.
all과 any| 함수 | 의미 |
|---|---|
all() | 모든 값이 참인가? |
any() | 하나라도 참인가? |
all → 모두
any → 하나라도
chrchr()는 숫자 형태의 유니코드 값을 문자로 변환한다.
print(chr(97))
실행 결과
a
print(chr(44032))
실행 결과
가
즉,
유니코드 숫자 → 문자
로 변환한다.
dirdir()은 객체가 가지고 있는 속성과 메서드 목록을 확인할 때 사용한다.
a = [1, 2, 3]
print(dir(a))
실행하면 리스트에서 사용할 수 있는
append
clear
copy
count
extend
index
insert
pop
remove
reverse
sort
...
등을 확인할 수 있다.
딕셔너리도 확인할 수 있다.
a = {"name": "python"}
print(dir(a))
keys(), values(), items() 등 딕셔너리에서 사용할 수 있는 메서드를 확인할 수 있다.
객체에서 어떤 기능을 사용할 수 있는지 확인할 때 유용하다.
divmoddivmod(a, b)는 두 숫자를 나눈 몫과 나머지를 한 번에 반환한다.
print(divmod(7, 3))
실행 결과
(2, 1)
즉,
7 / 3
몫 → 2
나머지 → 1
이다.
따로 계산하면
print(7 // 3)
print(7 % 3)
실행 결과
2
1
divmod(7, 3)
은
(7 // 3, 7 % 3)
과 비슷하게 생각하면 된다.
enumerateenumerate()는 반복 가능한 데이터를 사용할 때 인덱스 번호와 값을 함께 가져온다.
names = ["철수", "영희", "민수"]
for i, name in enumerate(names):
print(i, name)
실행 결과
0 철수
1 영희
2 민수
일반적인 for문은 값만 가져온다.
for name in names:
print(name)
하지만 enumerate()를 사용하면
인덱스 + 값
을 동시에 사용할 수 있다.
0 → 철수
1 → 영희
2 → 민수
반복문에서 현재 몇 번째 요소인지 알아야 할 때 자주 사용한다.
evaleval()은 문자열로 작성된 파이썬 표현식을 실제 코드처럼 계산한다.
print(eval("1 + 2"))
실행 결과
3
또는
print(eval("10 * 5"))
실행 결과
50
즉,
"1 + 2"
↓
파이썬 표현식으로 실행
↓
3
이 된다.
eval()은 문자열을 실제 코드로 실행할 수 있으므로 외부에서 입력받은 값을 그대로 넣는 것은 위험하다.
filterfilter()는 데이터 중에서 조건에 맞는 값만 걸러 낼 때 사용한다.
기본 구조
filter(함수, 반복가능한데이터)
예를 들어 양수만 가져오는 함수를 만들어 보자.
def positive(x):
return x > 0
사용
numbers = [1, -3, 2, 0, -5, 6]
result = filter(positive, numbers)
print(list(result))
실행 결과
[1, 2, 6]
동작 과정
1 → True → 포함
-3 → False → 제외
2 → True → 포함
0 → False → 제외
-5 → False → 제외
6 → True → 포함
lambda를 사용하면 더 간단하게 작성할 수 있다.
numbers = [1, -3, 2, 0, -5, 6]
print(list(filter(lambda x: x > 0, numbers)))
실행 결과
[1, 2, 6]
hexhex()는 정수를 16진수 문자열로 변환한다.
print(hex(255))
실행 결과
0xff
16진수는 앞에
0x
가 붙는다.
10진수 → 16진수
255 → 0xff
idid()는 객체를 구별할 수 있는 고유 식별값을 반환한다.
a = [1, 2, 3]
b = a
print(id(a))
print(id(b))
a와 b가 같은 객체를 가리키고 있다면 같은 id 값이 나온다.
a ─┐
├→ [1, 2, 3]
b ─┘
id()의 실제 숫자는 실행할 때마다 달라질 수 있다.
inputinput()은 사용자에게 값을 입력받는다.
name = input("이름을 입력하세요: ")
print(name)
실행 예
이름을 입력하세요: 둘기
둘기
중요한 점은 input()으로 입력받은 값은 기본적으로 문자열이라는 것이다.
age = input("나이: ")
print(type(age))
실행 결과
<class 'str'>
숫자로 사용하려면
age = int(input("나이: "))
처럼 변환해야 한다.
intint()는 값을 정수형으로 변환한다.
print(int("3"))
실행 결과
3
실수도 정수로 변환할 수 있다.
print(int(3.9))
실행 결과
3
소수점 이하 부분은 제거된다.
int()는 문자열로 표현된 다른 진수 값을 10진수로 변환할 수도 있다.
print(int("11", 2))
실행 결과
3
즉,
2진수 11
↓
10진수 3
이다.
16진수도 가능하다.
print(int("1A", 16))
실행 결과
26
isinstanceisinstance()는 객체가 특정 클래스의 인스턴스인지 확인한다.
class Person:
pass
a = Person()
print(isinstance(a, Person))
실행 결과
True
하지만
b = 3
print(isinstance(b, Person))
실행 결과
False
즉,
isinstance(객체, 클래스)
형태로 사용한다.
lenlen()은 데이터의 길이 또는 요소 개수를 반환한다.
문자열
print(len("python"))
6
리스트
print(len([1, 2, 3]))
3
튜플
print(len((1, 2)))
2
listlist()는 반복 가능한 데이터를 리스트로 변환한다.
문자열
print(list("python"))
실행 결과
['p', 'y', 't', 'h', 'o', 'n']
튜플
print(list((1, 2, 3)))
실행 결과
[1, 2, 3]
mapmap()은 반복 가능한 데이터의 모든 요소에 같은 함수를 적용한다.
기본 구조
map(함수, 반복가능한데이터)
예를 들어 모든 숫자에 2를 곱해 보자.
def two_times(x):
return x * 2
numbers = [1, 2, 3, 4]
result = map(two_times, numbers)
print(list(result))
실행 결과
[2, 4, 6, 8]
동작 과정
1 → 1 × 2 → 2
2 → 2 × 2 → 4
3 → 3 × 2 → 6
4 → 4 × 2 → 8
lambda를 사용하면
numbers = [1, 2, 3, 4]
print(list(map(lambda x: x * 2, numbers)))
실행 결과
[2, 4, 6, 8]
map과 filter 차이| 함수 | 역할 |
|---|---|
map() | 각각의 값을 변환 |
filter() | 조건에 맞는 값만 선택 |
map → 바꾼다
filter → 거른다
max / minmax()는 가장 큰 값을 반환한다.
print(max([1, 5, 3, 9, 2]))
실행 결과
9
min()은 가장 작은 값을 반환한다.
print(min([1, 5, 3, 9, 2]))
실행 결과
1
max → 최댓값
min → 최솟값
octoct()는 정수를 8진수 문자열로 변환한다.
print(oct(8))
실행 결과
0o10
8진수에는 앞에
0o
가 붙는다.
2진수 → 0b
8진수 → 0o
16진수 → 0x
openopen()은 파일을 열 때 사용한다.
기본 구조
open("파일이름", "모드")
예를 들어
f = open("test.txt", "r")
은 test.txt 파일을 읽기 모드로 연다.
| 모드 | 설명 |
|---|---|
r | 읽기 |
w | 쓰기 |
a | 내용 추가 |
b | 바이너리 모드 |
예를 들어
f = open("test.txt", "w")
는 쓰기 모드이다.
바이너리 파일을 읽는다면
f = open("image.jpg", "rb")
처럼 사용할 수 있다.
ordord()는 문자를 유니코드 숫자 값으로 변환한다.
print(ord("a"))
실행 결과
97
print(ord("가"))
실행 결과
44032
chr()와 반대라고 생각하면 된다.
chr()
97
↓
'a'
ord()
'a'
↓
97
| 함수 | 변환 |
|---|---|
chr() | 숫자 → 문자 |
ord() | 문자 → 숫자 |
powpow(x, y)는 x의 y제곱을 계산한다.
print(pow(2, 4))
실행 결과
16
즉,
2⁴ = 16
이다.
다음과 같은 의미이다.
2 ** 4
rangerange()는 일정 범위의 숫자를 만들어 반복문에서 자주 사용한다.
print(list(range(5)))
실행 결과
[0, 1, 2, 3, 4]
시작값을 생략하면 0부터 시작한다.
주의할 점은 마지막 숫자인 5는 포함하지 않는다는 것이다.
0 이상 5 미만
print(list(range(5, 10)))
실행 결과
[5, 6, 7, 8, 9]
range(시작, 끝)
형태이다.
끝 값은 포함하지 않는다.
print(list(range(1, 10, 2)))
실행 결과
[1, 3, 5, 7, 9]
세 번째 값은 증가 폭이다.
range(시작, 끝, 증가값)
음수도 가능하다.
print(list(range(5, 0, -1)))
실행 결과
[5, 4, 3, 2, 1]
roundround()는 숫자를 반올림한다.
print(round(4.6))
실행 결과
5
print(round(4.2))
실행 결과
4
소수점 자리수를 지정할 수도 있다.
print(round(5.678, 2))
실행 결과
5.68
즉,
round(숫자, 자릿수)
형태로 사용한다.
sortedsorted()는 데이터를 정렬하고 새로운 리스트를 반환한다.
numbers = [3, 1, 2]
print(sorted(numbers))
실행 결과
[1, 2, 3]
문자열도 가능하다.
print(sorted("python"))
각 문자를 정렬한 리스트가 반환된다.
sorted()와 sort() 차이sorted()
a = [3, 1, 2]
b = sorted(a)
a → [3, 1, 2]
b → [1, 2, 3]
원본은 그대로 유지된다.
반면
a.sort()
는 리스트 a 자체를 정렬한다.
| 구분 | sorted() | .sort() |
|---|---|---|
| 형태 | 내장 함수 | 리스트 메서드 |
| 원본 변경 | X | O |
| 반환값 | 정렬된 리스트 | None |
strstr()은 값을 문자열로 변환한다.
a = 3
print(str(a))
실행 결과
'3'
자료형을 확인하면
print(type(str(a)))
실행 결과
<class 'str'>
sumsum()은 반복 가능한 데이터의 숫자를 모두 더한다.
print(sum([1, 2, 3]))
실행 결과
6
튜플도 가능하다.
print(sum((10, 20, 30)))
실행 결과
60
기존에는
result = 0
for i in [1, 2, 3]:
result += i
처럼 작성할 수 있지만 sum()을 사용하면
sum([1, 2, 3])
으로 간단하게 처리할 수 있다.
tupletuple()은 반복 가능한 데이터를 튜플로 변환한다.
리스트
print(tuple([1, 2, 3]))
실행 결과
(1, 2, 3)
문자열
print(tuple("abc"))
실행 결과
('a', 'b', 'c')
typetype()은 객체의 자료형을 확인한다.
print(type("python"))
실행 결과
<class 'str'>
print(type([1, 2, 3]))
실행 결과
<class 'list'>
print(type((1, 2, 3)))
실행 결과
<class 'tuple'>
zipzip()은 여러 개의 반복 가능한 데이터를 같은 위치끼리 묶어 준다.
a = [1, 2, 3]
b = ["a", "b", "c"]
print(list(zip(a, b)))
실행 결과
[(1, 'a'), (2, 'b'), (3, 'c')]
동작을 보면
1 + a → (1, 'a')
2 + b → (2, 'b')
3 + c → (3, 'c')
이다.
3개의 데이터도 묶을 수 있다.
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
print(list(zip(a, b, c)))
실행 결과
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
zip() 활용 예학생 이름과 점수를 묶어 보자.
names = ["철수", "영희", "민수"]
scores = [80, 90, 95]
for name, score in zip(names, scores):
print(name, score)
실행 결과
철수 80
영희 90
민수 95
zip()은 서로 관련 있는 여러 데이터를 함께 처리할 때 유용하다.
| 함수 | 기능 |
|---|---|
abs() | 절댓값 |
all() | 모든 요소가 참인지 확인 |
any() | 하나라도 참인지 확인 |
chr() | 유니코드 숫자 → 문자 |
dir() | 객체의 속성/메서드 확인 |
divmod() | 몫과 나머지 반환 |
enumerate() | 인덱스와 값 함께 반환 |
eval() | 문자열 표현식 실행 |
filter() | 조건에 맞는 데이터 선택 |
hex() | 16진수 변환 |
id() | 객체 식별값 확인 |
input() | 사용자 입력 |
int() | 정수 변환 |
isinstance() | 특정 클래스의 인스턴스인지 확인 |
len() | 길이 확인 |
list() | 리스트 변환 |
map() | 모든 요소에 함수 적용 |
max() | 최댓값 |
min() | 최솟값 |
oct() | 8진수 변환 |
open() | 파일 열기 |
ord() | 문자 → 유니코드 숫자 |
pow() | 거듭제곱 |
range() | 숫자 범위 생성 |
round() | 반올림 |
sorted() | 정렬된 리스트 반환 |
str() | 문자열 변환 |
sum() | 합계 |
tuple() | 튜플 변환 |
type() | 자료형 확인 |
zip() | 여러 데이터를 같은 위치끼리 묶음 |
이번 장의 모든 함수를 한 번에 외울 필요는 없다.
실제 코드에서 많이 만나게 되는 함수부터 기억하면 된다.
len() → 길이
sum() → 합계
max() → 최댓값
min() → 최솟값
sorted() → 정렬
enumerate() → 인덱스 + 값
zip() → 여러 데이터 묶기
map() → 각각 변환
filter() → 조건으로 거르기
int() → 정수 변환
str() → 문자열 변환
list() → 리스트 변환
tuple() → 튜플 변환
type() → 자료형 확인
isinstance()→ 클래스 확인
특히
enumerate → 번호까지 필요할 때
zip → 두 리스트를 같이 돌릴 때
map → 전부 같은 방식으로 바꿀 때
filter → 조건에 맞는 것만 남길 때
라고 기억하면 이해하기 쉽다.
map, filter, zip, enumerate 비교numbers = [1, 2, 3, 4]
maplist(map(lambda x: x * 2, numbers))
[2, 4, 6, 8]
각각의 데이터를 변환
filterlist(filter(lambda x: x % 2 == 0, numbers))
[2, 4]
조건에 맞는 데이터를 선택
enumeratelist(enumerate(numbers))
[(0, 1), (1, 2), (2, 3), (3, 4)]
인덱스 + 값
zipnames = ["A", "B", "C", "D"]
list(zip(names, numbers))
[('A', 1), ('B', 2), ('C', 3), ('D', 4)]
여러 데이터를 같은 위치끼리 묶기
내장 함수는
import없이 바로 사용할 수 있는 파이썬 기본 함수이다.
이번 장에서는 함수를 전부 외우는 것보다
이런 기능이 필요할 때 이미 만들어진 함수가 있구나!
라는 것을 알아 두는 것이 중요하다.
특히 다음 함수들은 앞으로 코드를 작성하면서 자주 사용하게 된다.
len()
range()
enumerate()
zip()
map()
filter()
sum()
max()
min()
sorted()
int()
str()
list()
tuple()
type()
isinstance()
필요할 때 사용법이 기억나지 않는다면 찾아서 사용하면 된다.