파이썬(python) 함수 기능에 대한 모든 것
문제 풀기 : 알고리즘 문제에서 주어지는 것들을 구별하는 습관 가지기!!
순서는 상관없이 배우는 대로 정리를 해 나가고 있습니다.
파이썬 함수
class , object, instance
- 클래스(class)는 틀이고, 객체(object)는 이 틀에 만들어진 피조물을 뜻함
- 인스턴스(instance) : 실체
- 객체(object) : 그 실체를 말함
- 클래스 정의 $\rightarrow$ 인스턴스명 = 클래스() $\rightarrow$ 어떤 객체의 메서드를 사용할 때는 객체.메서드
- self는 그 클래스의 객체를 가리킴
- __init__ : 초기화(initialize) 메서드, 어떤 클래스의 객체가 만들어질 때 자동으로 호출되어서 그 객체가 갖게 될 여러 가지 성질을 정해주는 일을 함
inheritance, override, super
- 상속 (inheritance) : 클래스를 부모와 자식으로 나눈 뒤 부모클래스의 내용을 자식이 그대로 가져다 쓰는 것
- 오버라이드 (override) : 같은 이름을 가진 메소드를 덮을 때
- super() : 자식 클래스에서 부모클래스의 내용을 사용하고 싶을 때
- class : a blueprint for creating objects of a particular type
- methods : regular functions that are part of a class
- attributes : variables that hold data that are part of a class
- object : a specific instance of a class
- inheritance : means by which a class can inherit capabilities from another
- composition : means of building complex objects out of other objects
input()
- 사용자가 입력한 값을 어떤 변수에 대입하고 싶을 때
- input은 입력되는 모든 것을 문자열로 취급한다.
split()
- 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 준다
나눗셈
- / : 그냥 나눔
- // : 몫
- % : 나머지
- divmod(a,b) : 매개변수로 받은 a를 b로 나눈다. 그리고 그 몫과 나머지를 튜플(tuple) 데이터 타입으로 반환합니다.
- 특수문자 표기는
\
앞에 쓰면 됨
sys.stdin.readline()
- input 대신 씀
index
- 리스트에 x 값이 있으면 x의 위치 값을 돌려준다.
count
- 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다.
enumerate
- 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환한다.
- enumerate는 “열거하다”라는 뜻이다.
string.printable
- 인쇄 가능한 것으로 간주하는 ASCII 문자의 문자열
zip(*iterable)
- 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 터플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환한다.
- 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수이다.
*iterable
은 반복 가능(iterable)한 자료형 여러 개를 입력할 수 있다는 의미이다.
set
- 집합. 중복되지 않은 원소를 얻고자 할 때
- 중복을 허용하지 않는다 / 순서가 없다(Unordered)
set()
: 비어있는 집합 만들기
f-string
- f-string을 나타 낼 수 있게 문자열 앞에f를 입력하고 중괄호 사이에 {변수 : 소수점자리수} 순서로 작성
add
- 집합에 요소를 추가할 때
-
- 집합에서 차집합을 구할 때
sorted(정렬할 데이터, key 파라미터, reverse 파라미터)
- 첫 번째 매개변수로 들어온 이터러블한 데이터를 새로운 정렬된 리스트로 만들어서 반환해 주는 함수
sorted(iterable)
- 입력값을 정렬한 후 그 결과를 리스트로 돌려주는 함수이다.
list[index] = value
- index 위치에 value 값을 넣어라
list.append(a)
- 리스트 끝에 a값 추가
list.insert(a, b)
- 리스트 a위치(=index)에 b 값 추가
list.remove(a)
- 리스트에서 a값 제거
list.pop()
- 리스트에 있는 마지막 값을 반환한 후 해당 값을 삭제하는 함수
list.extend(list2)
- 리스트와 리스트2을 결합
list.reverse()
- 리스트 요소들를 뒤집음
ord()
- 문자의 아스키 코드값을 리턴하는 함수이다.
chr()
- 아스키 코드값 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수이다.
- a부터 z까지는 97 ~ 122까지이다. 예를 들어 chr(97)==’a’ , chr(122)==’z’
변수.find(찾을 문자) or 변수.index(찾을 문자)
- 변수에 위치한 문자열 중 괄호() 안에 넣은 특정 문자가 처음 위치한 자리의 값 반환
- find함수는 찾는 값이 없을 때 -1을 출력한다.
- 문자열을 찾을 수 있는 변수는 문자열만 사용이 가능하다. 리스트, 튜플, 딕셔너리 자료형에서는 find 함수를 사용할 수 없다.
- index함수는 찾는 문자가 없는 경우에 ValueError 에러가 발생한다.
- 문자열, 리스트, 튜플 자료형에서 사용 가능하고 딕셔너리 자료형에는 사용할 수 없어 AttributeError 에러가 발생한다.
abs
- 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 돌려주는 함수이다.
all(x)
- 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다.
- 반복 가능한 자료형이란 for문으로 그 값을 출력할 수 있는 것을 의미한다. 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다.
any(x)
- 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며 이 x의 요소 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False를 돌려준다.
- all(x)의 반대이다.
dir
- 객체가 자체적으로 가지고 있는 변수나 함수를 보여 준다.
eval(expression)
- 실행 가능한 문자열(1+2, ‘hi’ + ‘a’ 같은 것)을 입력으로 받아 문자열을 실행한 결괏값을 돌려주는 함수이다.
map(function, iterable)
- map은 리스트의 요소를 지정된 함수로 처리해주는 함수
- 첫 번째 매개변수로는 함수가 오고 두 번째 매개변수로는 반복 가능한 자료형(리스트, 튜플 등)이 온다.
- map 함수의 반환 값은 map객체 이기 때문에 해당 자료형을 list 혹은 tuple로 형 변환시켜주어야 한다.
filter(f, iterable)
- 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받는다.
그리고 두 번째 인수인 반복 가능한 자료형 요소가 첫 번째 인수인 함수에 입력되었을 때 반환 값이 참인 것만 묶어서(걸러 내서) 돌려준다. - 앞의 함수는 lambda를 사용하면 더욱 간편하게 코드를 작성할 수 있다.
lambda 매개변수 : 표현식
- 함수표현식
len(s)
- 입력값 s의 길이(요소의 전체 개수)를 돌려주는 함수이다.
oct(x)
- 정수 형태의 숫자를 8진수 문자열로 바꾸어 돌려주는 함수이다.
hex(x)
- 정수 값을 입력받아 16진수(hexadecimal)로 변환하여 돌려주는 함수이다.
open(filename, [mode])
- “파일 이름”과 “읽기 방법”을 입력받아 파일 객체를 돌려주는 함수이다.
range
- 이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 돌려준다.
round(number, ndigits)
- 숫자를 입력받아 반올림해 주는 함수이다.
str(object)
- 문자열 형태로 객체를 변환하여 돌려주는 함수이다.
upper()
- 문자열 대문자로 변경하는 함수
lower()
- 문자열 소문자로 변경하는 함수
capitalize()
- 주어진 문자열에서 맨 첫 글자를 대문자로 변환해줌.
print()
- 결과물 출력
- 긴 문자열일 경우
\
을 사용하여 여러 줄에 작성 가능 - end= : print에서 마지막 변경 (default = enter)
- sep= : 지정된 기호에 따라 문자열을 구분
*args
- 여러 개의 인자를 함수로 받고자 할 때
- arguments의 줄임말 (꼭 이 단어를 쓸 필요는 없다.)
- 여러 개의 인자로 함수를 호출할 경우, 내부에서는 튜플로 받은 것처럼 인식
def plus(*nums):
sum=0
for num in nums:
sum+=num
return sum
print(plus(1+2+3)) # 6
print(plus(1+2+3+2+1+4)) # 13
**kwargs
(키워드 = 특정 값)
형태로 함수를 호출- keyword argument의 줄임말
- 딕셔너리 형태로
{'키워드':'특정 값'}
함수 내부로 전달
def call_member(**infos):
for key, val in infos.items():
print(f'이름: {key}\n나이: {val}\n')
call_member(홍길동=23, 미나=27, 나나=22)
# 결과
# 이름: 홍길동
# 나이: 23
# 이름: 미나
# 나이: 27
# 이름: 나나
# 나이: 22
permutations
- permutations는 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)을 계산해준다.
-
코드
from itertools import permutations data = ['A', 'B', 'C'] result = list(permutations(data, 3)) print(result) # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
combinations
- combinations는 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합)을 계산한다.
-
코드
from itertools import combinations data = ['A', 'B', 'C'] result = list(combinations(data, 2)) print(result) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
댓글남기기