[파이썬] 복습 노트 - 8 | 함수와 내장함수
1. 함수
- 특정 기능을 하는 코드 또는 코드의 묶음
- 함수의 종류 : 내장함수
외장함수
사용자 정의 함수
2. 내장함수
- 파이썬에서 항상 사용할 수 있는 함수가 내장되어 있음
- 별도의 설치나 import 할 필요가 없음 (외장함수의 경우 사용 전 import 후 사용)
1) 문자열 내장 함수
- eval() : 실행하고자 하는 표현식을 문자열로 전달하면 표현식의 결과값을 반환하는 함수
- str() : 전달받은 값을 문자열로 형변환하는 함수
str(10) => "10" 소괄호 안에 들어가는 값들을 쌍따옴표를 붙여서 문자열로 반환한다.
print("100 + 200") # 문자열
# eval()
print(eval("100 + 200")) # 문자열로 전달받은 표현식을 인식하여 결과값을 반환
# print(sum("1, 3, 5, 7, 9")) # str
print(sum(eval("1, 3, 5, 7, 9")))
<출력 결과>
100 + 200
300
9
25
활용해보면 이런식으로 사용자 입력이 문자열로 저장되는 것을 활용해서 사용할 수도 있겠다.
그냥 제일 바깥쪽 따옴표를 떼는 명령어라고 생각하면 된다.
2) 숫자 내장함수(int or float)
- abs() : 전달된 값의 절대값을 반환
10의 절대값 -> 10
-10의 절대값 -> 10
- divmod() : 전달된 2개의 값을 나누어서 몫과 나머지를 하나의 튜플로 묶어서 반환
- int() : 전달된 값을 정수로 변환하는 함수
전달된 값이 없을 때는 0을 반환
- float() : 전달된 값을 실수로 변환하는 함수
전달된 값이 없을 때는 0.0을 반환
- max() : 전달된 값들 중에서 가장 큰 값을 반환
- min() : 전달된 값들 중에서 가장 작은 값을 반환
- sum() : 전달된 리스트나 튜플과 같은 반복 가능 객체의 합을 반환
** 숫자가 아닌 값을 넣으면 오류 발생
- pow() : 전달된 2개의 숫자의 거듭제곱을 반환(** 거듭제곱 연산자와 동일)
- round() : 전달된 값을 이용해서 반올림한 값을 반환
전달된 값이 1개이면 정수로 반올림한 값을 반환
전달된 값이 2개이면 두번째로 전달한 값만큼 소수점을 남겨둠
3) 시퀀스 내장함수
- range() : 전달된 값에 따라서 연속된 정수형 데이터를 생성하는 함수
- len() : 전달된 객체의 길이(항목의 수)를 반환하는 함수
- enumerate() : 리스트와 함께 사용할 수 있음
리스트에 저장된 요소와 인덱스 번호를 튜플로 묶음
(idx, 리스트 요소)
- zip() : 전달된 여러개의 반복 가능 객체의 요소를 튜플로 묶어서 반환하는 함수
전달된 반복 가능 객체의 길이가 서로 다르면 길이가 짧은 객체를 기준으로 동작함
- sorted() : 전달된 반복가능 객체의 오름차순 정렬 결과를 반환하는 함수
- sorted(반복가능객체, revese = True)
: 내림차순 정렬 결과를 반환
li.sort() : 오름차순 정렬 메소드
li.sort(reverse = True) : 내림차순 정렬 메소드
2. 문자열 메소드
- .count()
문자열 내부에 포함된 특정 문자열의 개수를 반환하는 메소드
- .find()
문자열 내부에 포함된 특정 문자열을 찾고자 할 때 사용하는 메소드
찾고자 하는 문자열이 있다면 그 문자열이 처음 나온 위치(인덱스)를 반환
찾는 문자열이 없으면 -1반환
- .index()
find() 메소드와 같은 기능을 하며 사용방법도 동일함
찾는 문자열이 없으면 오류 발생
# .count()
sok = "내가 그린 기린 그림은 목 긴 기린 그림이고, 네가 그린 기린 그림은 목 짧은 기린 그림이다"
print(sok, type(sok))
print(sok.count("기린")) # sok이라는 문자열에서 "기린"이 몇번 나옴? => 4
print(sok.count("그림")) # sok이라는 문자열에서 "그림"이 몇번 나옴? => 4
# .find()
data = "best of Best"
print(data.find("best")) # data라는 문자열에서 'best' 몇번 "인덱스번호"부터 나오는지? => 0번
print(data.find("worst")) # find() 메소드는 "없는 문자열"을 찾고자 한다면 -1이 나옴
# .index()
print(data.index("best")) # find()메소드와 동일
# print(data.index("worst"))
# index() 메소드는 없는 문자열을 찾으려고 하면 오류 발생!! ata.find("worst"))
# find() 메소드는 없는 문자열을 찾고자 한다면 -1이 나옴
# .index()
print(data.index("best")) # find()메소드와 동일
# print(data.index("worst")) # index() 메소드는 없는 문자열을 찾으려고 하면 오류 발생
- 대소문자 변환 메소드
.upper() : 모두 대문자로 변환한 결과를 반환
.lower() : 모두 소문자로 변환한 결과를 반환
.capitalize() : 첫글자는 대문자로 나머지는 소문자로 변환한 결과를 반환
★★★★★ 정말 많이 사용하는 메서드
- .join()
전달된 반복가능 객체의 각 요소 사이에 특정 문자를 포함시켜
하나의 문자열로 반환하는 메소드
- .split()
하나의 문자열을 여러개의 문자열로 분리하여 저장한 리스트를 반환
괄호 안에 아무것도 넣지 않으면 띄어쓰기를 기준으로 문자열이 분리되고,
괄호안에 문자열을 넣으면 해당 문자를 기준으로 문자열이 분리된다.
분리된 문자열은 List 타입으로 반환
- .replace()
문자열의 일부 문자열을 다른 문자열로 바꾼 결과를 반환하는 메소드
전달된 2개의 문자열 중에 첫번째 문자열을 두번째 문자열로 바꿈
- 불필요한 문자열 제거 메소드
.strip() : 양쪽 끝에 있는 불필요한 문자열 제거
.lstrip() : 왼쪽 끝에 있는 불필요한 문자열 제거
.rstrip() : 오른쪽 끝에 있는 불필요한 문자열 제거
- .isdigit()
문자열이 숫자로만 구성되어 있는지 확인하는 메소드
모든 문자가 숫자로만 구성되어 있으면 True,
문자가 단 하나라도 있으면 False를 반환
단, 실수나 음수는 안됨 ("-", "." 를 문자로 인식)
0과 양의 정수만 판단