Python
[Python] 함수
daze1002
2025. 2. 17. 01:58
반응형
01. 함수 (function)
01-01. 함수 개요
함수란
함수 표현식
def 키워드를 사용하여 함수를 정의한다.
이때, 함수 이름 뒤에 소괄호와 콜론을 작성하며 함수에서 실행할 내용은 "반드시" 들여쓰기 한다.
def 함수명(): (함수가 실행하는 코드 내용)
01-02. 매개변수
파라미터
- 함수 생성 시 함수명 옆에 붙이는 소괄호 안에 매개변수로 전달받을 값의 변수명을 넣을 수 있다. 이를 파라미터라고 한다.
def sample(파라미터):
print('hello')
함수를 정의할 때 매개변수의 기본값을 지정해 줄 수 있다.
함수 호출 시 인자를 보내지 않으면 함수 선언부에서 미리 지정한 기본값을 사용하여 함수를 실행한다.
def sample(name='daze'): print(name)
인자
- 함수 호출 시 함수명에 소괄호를 붙여 호출하며, 이때 소괄호 안에 전달하는 값은 인자라고 한다.
- 함수 인자를 보내는 방식은 다음 2가지가 있다.
- 위치 인자: 위치로 매칭하는 방법
- 키워드 인자: 매개변수 이름으로 매칭하는 방법
- 이때, 위치 인자를 먼저 사용하면 뒤에 키워드 인자를 쓸 수 있다.
- 단, 위치 인자와 키워드 인자를 함께 사용할 때 키워드 인자를 먼저 사용하는 것은 불가하다.
def sample(name='daze'):
print(name)
sample('jordan') #위치인자
sample(name='jordan') # 키워드 인자
01-03. 반환값
return
- 함수 블럭 내부에서 return 키워드를 만나면 함수의 작동이 중단된다.
- return 키워드 뒤에 변수 또는 값이 오면, 해당 자료를 함수 호출 위치에 반환하며 중단된다.
def sample():
a = 4
.
.
.
return a
01-04. 패키지와 언패키지
패키징
위치 인자가 많을 때 *을 붙여서 패키징하여 하나의 객체로 처리할 수 있다.
def add_many(*args): result = 0 for i in args: result = result + i return result add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # 55
키워드 인자인 경우에는 * 두 개(**)를 붙여서 작성할 수 있다.
- (키: 값으로 넣을 때)
언패키징
패키지와 반대되는 개념으로 여러 개의 객체를 포함하는 하나의 객체를 풀어준다.
def sum(a, b, c): return a + b + c numbers = [1, 2, 3] # sum(numbers) # 배열로 하나만 넘겨주면 에러 발생 print(sum(*numbers)) # 6
01-05. 람다 (lambda)
람다란
람다 표현식
변수명 = lambda (매개변수): (함수 실행 내용)
람다 사용 예시
람다 기본
add = lambda x, y: x + y print(add(3, 5)) # 8
람다 함수를 고차함수의 인자로 전달 (배열 요소 처리)
numbers = [1, 2, 3, 4, 5] squared_numbers = map(lambda x: x**2, numbers) print(list(squared_numbers)) # [1, 4, 9, 16, 25]
람다 함수를 고차함수의 인자로 전달 (배열 요소 필터링)
numbers = [1, 2, 3, 4, 5, 6] even_numbers = filter(lambda x: x % 2 == 0, numbers) print(list(even_numbers)) # [2, 4, 6]
배열 정렬 기준을 람다 함수로 전달
points = [(1, 2), (3, 1), (5, -1)] sorted_points = sorted(points, key=lambda x: x[1]) print(sorted_points) # [(5, -1), (3, 1), (1, 2)]
함수의 종류
파라미터와 반환값에 따른 종류
- param, no return value
- param, return value
- no param, no return value
- no param, return value
함수 호출 방식에 따른 종류
Call By Value: 기본값 형식을 인수로 전달하는 경우, 단순 값복사로 처리된다.
# 숫자, 문자열 등 immutable 객체형에 대하여 def f1(b): b = 200 a = 100 f1(a) # 매개변수 b에는 a의 값이 복사되어서 담긴다. a에 대한 영향이 없다. print(a)
def f2(b): b = "def" a = "abc" f2(a) print(a)
# 튜플도 immutable def f3(t): t = (4,5,6) a = (1,2,3) f3(a) print(a)
Call By Reference
def f4(l): l[0] = 100 l = [1,2,3] f4(l) print(l)
def f5(d): d['a'] = 100 d = {'a':1, 'b':2} f5(d) print(d)
01-06. 내장 함수
- print() : 콘솔 출력 기능을 하는 함수
- input() : 콘솔을 통해 사용자 입력을 받아 문자열로 반환하는 함수
- type() : 인자로 전달된 값의 자료형을 반환하는 함수
- len() : 인자로 전달된 시퀀스 자료형의 요소의 갯수(길이)를 반환하는 함수
- int(), float(), str(), list(), dict() : 인자로 전달된 자료형을 특정 자료형으로 형 변환하여 반환하는 함수
- range() : 전달받은 인자에 따라 일정 범위의 숫자 시퀀스를 생성하여 반환하는 함수
- min(), max() : 인자로 전달된 시퀀스의 요소 중 가장 크거나 작은 값을 반환하는 함수
- sum() : 인자로 전달된 시퀀스 내 모든 요소의 합계를 반환하는 함수
- abs() : 절댓값을 반환하는 함수
- round() : 인자로 전달된 숫자를 반올림하는 함수
- map() : 함수와 시퀀스를 인자로 받아, 시퀀스의 각 요소에 함수를 적용한 결과를 반환하는 함수
- filter() : 함수와 시퀀스를 인자로 받아, 시퀀스에서 함수의 조건을 만족하는 요소만 반환하는 함수
- pow() : 인자의 첫 번째 숫자를 두 번째 숫자로 거듭 제곱한 값을 반환하는 함수