목차
여럿이 함께 프로그램을 개발하려면 필요한 부분을 나눠서 작성한 후 합쳐야 한다. 이 때 프로그램을 기능별로 나누는 방법은 (1)함수 (2)객체 (3)모듈이 있는데 그 중에서 먼저 함수에 대해서 살펴보도록 하자
1. 함수의 기초
•
함수: 어떤 일을 수행하는 코드의 덩어리, 묶음
•
함수의 기능
◦
반복적인 수행을 1회만 작성한 후 호출해서 사용
◦
코드를 논리적인 단위로 분리
◦
캡슐화: 인터페이스(인풋, 아웃풋)만 알면 타인의 코드를 쉽게 사용
1.1 선언
•
함수 선언 문법
def <function_name>(parameter):
<code>
return <return value>
Python
복사
•
함수 선언 예시
def sum_func(a, b):
print(a + b)
Python
복사
1.2 호출
•
function_name(argument)
sum_func(1, 2)
Python
복사
3
type(sum_func)
Python
복사
function
•
함수 호출 방식: 함수 인자를 전달하는 방식에는 다음의 두 가지가 있음
1.
값에 의한 호출 (call by value)
•
함수에 인자를 넘길 때 값만 넘김
•
함수 내에 인자 값 변경 시, 호출자에게 영향을 주지 않음
2.
참조에 의한 호출 (call by reference)
•
함수에 인자를 넘길 때 메모리 주소를 넘김
•
함수 내에 인자 값 변경 시, 호출자의 값도 변경됨
파이썬은 객체의 주소가 함수로 전달되는 방식
◦
전달된 객체를 참조하여 변경시 호출자에게 영향을 줌
◦
새로운 객체를 만들 경우 호출자에게 영향을 주지 않음
def spam(eggs):
eggs.append(1)
eggs = [2, 3]
ham = [0]
spam(ham)
print(ham)
Python
복사
[0, 1]
def test(t):
t = 20
print("In function: ", t)
x = 10
print("Before: ", x)
test(x)
print("After: ", x)
Python
복사
Before: 10
In function: 20
After: 10
1.3 parameter & argument
•
parameter: 함수의 입력 값 인터페이스
•
argument: 실제 parameter에 대입된 값
•
현업에서는 혼용해서 말하는 경우도 있음
def sum_func(a, b): # a, b: parameter
print(a + b)
sum_func(1, 2) # 1, 2: argument
Python
복사
3
•
keyword argument
◦
함수에 입력되는 parameter의 변수명을 사용하여 argument를 넘김
def div_func(a, b):
print(a / b)
div_func(10,2), div_func(b=10, a=2) # keyword argument
Python
복사
5.0
0.2
(None, None)
•
default parameter
◦
parameter의 기본 값을 사용, 입력하지 않을 경우 기본값을 출력
◦
non-default parameter를 몰아서 써주고 나서 맨 끝에 넣어줌
def sum_func(a, b = 0): # b는 default 값이 0인 parameter
print(a + b)
sum_func(2), sum_func(2, 3)
Python
복사
2
5
(None, None)
1.4 return
•
함수를 호출했을 때 결과를 반환하는 용도로 사용
•
return data가 있는 함수 & 없는 함수가 있음
def sum_func(a, b):
return a + b
result = sum_func(1, 2)
result
Python
복사
3
1.5 함수의 형태
parameter의 유무, return value의 유무에 따라 함수 형태가 다름
2. Variable-length arguments
•
개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 방법
•
asterisk(*): 전부, 모두, all
•
args: keyword가 없는 argument를 parameter로 받을 때 사용
•
*kwargs: keyword가 있는 argument를 parameter로 받을 때 사용
2.1 가변인자: *args
•
가변인자는 일반적으로 *args를 변수명으로 사용
•
기존 parameter 이후에 나오는 값을 tuple로 저장함
•
가변인자는 마지막 parameter 위치에 사용 가능
2.2 키워드 가변인자: **kwargs
•
parameter의 이름을 따로 지정하지 않고 입력하는 방법
•
asterisk(*) 두개를 사용하여 함수의 parameter를 표시함
•
입력된 값은 dict type으로 사용할 수 있음
•
키워드 가변인자는 오직 한 개만 기존 가변인자(있을 경우) 다음에 사용함
3. docstring
함수에 대한 설명을 넣는 것 (함수와 parameter에 관한 설명은 필수)
def dss():
"description"
or
"""
description
description
"""
Python
복사
참고사항
•
PEP 20: The Zen of Python - "Readability counts"
•
PEP 8: Style Guide for Python Code
참고자료
•
패스트캠퍼스, ⟪데이터사이언스스쿨 8기⟫ 수업자료
•
인프런, ⟪프로그래밍, 데이터 과학을 위한 파이썬 입문⟫ 수업자료