1. Python 함수의 특징
ㅇ 파이썬 함수 이름은, 변수 이름과 동일한 규칙을 따름
- 문자나 _로 시작하고, 문자, 숫자, _만 포함할 수 있음
ㅇ 파이썬 함수의 정의
- def 키워드를 사용하여 정의함
- 함수명 직후에 괄호를 주고,
. 그 안에 매개변수를 받을 수 있으며,
. 매개변수가 없어도 괄호를 포함해야 함
- 함수의 본문은, 콜론(:) 뒤에,
. 들여쓰기 된 코드 블록으로 작성함
ㅇ 자기 자신을 호출 가능
- 이를 재귀 함수라고 하며, 복잡한 문제를 단순화하는 데 유용
2. Python 함수의 종별
ㅇ 내장 함수 (Built-in Function)
* (모듈이나 패키지를 가져오지 않고도 즉시 사용 가능한 함수)
- 산술
. (절대값) abs()
. (합) sum()
.. 例) sum({1,2}) => 3, sum({0:1,1:3}) => 4, sum([1,2,3]) => 6, sum([1,2,3],10) => 16
. (나눗셈) divmod(,) : 몫과 나머지 함께 구하기 (결과를 튜플로 반환)
.. 例) quotient, remainder = divmod(7, 2) => quotient = 3, remainder = 1
. (최대,최소) max(), min()
- 형변환
. str() : 수치(숫자형)를 문자열로 변환
. int() : 문자열을 정수형 수치로 변환
. float() : 문자열을 실수형 수치로 변환
.. [참고] 양의 무한대 : float('inf'); 음의 무한대 : float('-inf');
. int() : 정수형으로 변환 (단, 소수 이하 반올림 올림이 아니고 내림 임)
. float() : 실수형으로 변환
. round() : 반올림
. bool() : 논리형으로 변환 (논리값 판정)
.. int,float일 때, 0 => False, 0이 아니면 => True
.. chr,str일 때, 빈 값 => False, 빈 값 아니면 => True
- 아스키 코드
. ord() : 문자를 아스키 코드 값으로 변환
. chr() : 아스키 코드 값을 문자로 변환
- 파일 처리
. 파일 열기 : open()
.. 형식 : fileobj = open( filename, mode [, encoding=] )
.. mode : 첫자 (동작:r,w,x,a), 둘째자 (타입:t,b)
. 파일 닫기 : fileobj.close()
. 자동 처리 : with open(filename, mode) as fileobj:
- 입력
. input() : 입력된 값을 문자열로 변환 출력
.. input('입력: ') => 입력: xxx [Enter]
.. input.split() => `입력된 문자열을, 공백 기준으로 잘라내어 리스트로 출력`
.. A, B = input.split() => `입력 문자열을, 공백 기준으로 잘라, A,B 변수에 각각 저장`
.. A, B = map(int,input.split()) => `입력을, A,B 변수 각각에, int 변환 후 저장`
- 출력 : 화면에 표시
. format()
. globals()
. print()
- 문자열
. len() : 문자열 길이
- 특정 범위 내 리스트 생성
. range([strat,] stop [,step]) : 특정 범위 내 차례대로 증가하는 숫자 리스트를 생성 반환
.. 형식 : range(시작,끝,증가값), range(시작,끝), range(끝)
.. 例) list(range(3)) 또는 list(range(0,3)) => [0,1,2]
.. 例) list(range(3,7)) => [3,4,5,6]
.. 例) list(range(3,7,2)) => [3,5]
- 길이(크기) 알아보기 : len()
- 자료형 알아보기 : type()
- 메모리 위치 확인 : id()
. 메모리 상에 위치한 객체의 주소를 가져와 출력
- 정렬
. sorted() : 순서대로 정렬
.. sorted(data), sorted(data, reverse-parameter), sorted(data, key-parameter),
sorted(data, key-parameter, reverse-parameter)
. reversed() : 거꾸로 정렬 (뒤집기)
- 반복
. iter() : Iterator 객체를 생성하여 이를 반환
. enumerate(Iterable 객체 [,시작번호])
.. 리스트 등 Iterable 객체를 인수로 받아, Iterator 객체를 생성 반환
. map(콜백함수, Iterable 객체)
.. 리스트 등 Iterable 객체를 인수로 받아,
.. 각 원소들을 콜백함수로 처리하고,
.. 그 결과로써, Iterator 객체를 생성 반환
.. 例) list(map(lambda n : n**2, [1,2,3])) => [1,4,9]
- 데이터를 짝으로 엮기 : zip()
. 이터러블(iterable:순회가능한) 객체를 인자로 받고,
. 각 객체 내 원소 마다, 튜플 형태로, 차례로 접근할 수 있는 반복자(iterator)를 반환
.. 例) A=[1,2,3];B=[-1,-2,-3];[a+b for a,b in zip(A,B)] => [0, 0, 0]
- 객체 대상
. dir(객체명) : 객체 내 존재하는 요소들의 이름 보여주기
. hasattr(객체명,속성) : 객체 내 주어진 속성이 있는지 여부 (true/false)
. id() : 객체 마다 부여된 (식별용) 상수를 리턴
- (내장 함수 목록)
. abs(), all(), any(), ascii()
. bin(), bool(), breakpoint(), bytearray(), bytes(),
. callable(), chr(), classmethod(), compile(), complex()
. delattr(), dict(), dir(), divmod()
. enumerate(), eval(), exec()
. filter(), float(), format(), frozenset()
. getattr(), globals()
. hasattr(), hash(), help(), hex()
. id(), input(), int(), isinstance(), issubclass(), iter()
. len(), list(), locals()
. memoryview(), min(), map(), max(), next()
. object(), oct(), open(), ord()
. pow(), print(), property()
. range(), repr(), reversed(), round()
. set(), setattr(), slice(), sorted(), staticmethod(), str(), sum(), super()
. tuple(), type()
. vars(), zip(), __import__()
* [참고] ☞ 내장 함수 (파이썬 홈페이지)
ㅇ 사용자 정의 함수 (User-defined Function)
- def문을 사용하여 사용자가 직접 정의하는 함수
. 例) def my_function(x,y) :
3. 익명 함수 (Anonymous Function) 또는 람다 표현식 (Lambda Expression)
ㅇ (형식) lambda 인수: 표현식
- 람다 표현식의 변수 할당 : 변수 = lamda 인수: 표현식
- 람다 표현식의 호출 : (lamda 인수: 표현식)(인수값)
ㅇ 例) var = lambda n1, n2 : n1 + n2
- var : 생성된 익명 함수의 참조를 저장하는 변수
- lambda : 람다 표현식의 키워드
- n1, n2 : 매개변수
. n1 + n2 : 실행될 함수 본체
. 익명 함수의 호출 : var(2,3)
4. Function Annotation (함수 주석), Type Hint (타입 힌트), Type Annotation (타입 주석)
ㅇ 함수의 매개변수 및 리턴값의 자료형을 명시적으로 지정(주석)하기 위함으로, 강제성은 없음
def 함수명(매개변수1 : 매개변수1_주석, 매개변수2 : 매개변수2_주석) -> 리턴값_주석 :