Search

Python 03. Python Function - Basic

Created at
2018/07/10
Updated at
2021/01/19
Tags
Keywords
3 more properties
목차
여럿이 함께 프로그램을 개발하려면 필요한 부분을 나눠서 작성한 후 합쳐야 한다. 이 때 프로그램을 기능별로 나누는 방법은 (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의 유무에 따라 함수 형태가 다름
함수의 형태
parameter 없음
parameter 존재
인자 없이 수행문 수행 후 결과값 반환
인자를 사용하여 수행문 수행 후 결과값 반환

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기⟫ 수업자료
인프런, ⟪프로그래밍, 데이터 과학을 위한 파이썬 입문⟫ 수업자료