TIL#8 PYTHON 기초(5)

Dasom·2020년 7월 22일
0

python

목록 보기
5/50
post-thumbnail

저번에는 간단히 함수만들기만 공부하고 넘어갔었다.
오늘 함수에 대해 더 자세히 공부했고 그부분을 포스팅한다.

함수

입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내어놓는 것이 함수가 하는 일이다.

함수를 사용하는 이유

반복되는 부분이 있을 경우 '반복적으로 사용되는 가치 있는 부분'을 한 뭉치로 묶어서 '어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다'라는 식의 함수로 작성하는 것이 좋다.

자신이 만든 프로그램을 함수화하면 프로그램 흐름을 잘 파악할 수 있고 오류가 어디에서 나는지도 바로 알아차릴 수 있다.

구조

def 함수 이름(매개변수):
	수행할문장1
	수행할문장2
	...

매개변수와 인수
매개변수와 인수는 혼용해서 쓰이고 많이 헷갈리는 용어이다. 그러나 둘은 다르다. 매개변수는 함수에 입력으로 전달된 값은 받는 변수를 의미하고 인수는 함수를 호출할 때 전달받는 입력값을 의미한다.

def add(a, b):
	return a + b

print(add(3, 4))

여기서 매개변수는 (a, b)이다. 인수는 (3, 4)이다.

입력값과 결과값에 따른 함수의 형태

함수는 들어온 입력값을 받아서 어떤 처리를 한 후 적절한 결과값을 돌려준다. 함수의 형태는 입력값과 결과값의 존재 유무에 따라 4가지 유형으로 나뉜다.

일반적인 함수
입력값 O, 결과값 O 인 함수

def add(a, b):
	result = a + b
	return result

입력값이 없는 함수
입력값 X, 결과값 O

def say():
	return 'hi'

결과값이 없는 함수
입력값 O, 결과값 X

def add(a, b):
	print("%d, %d의 합은 %d입니다." % (a, b, a+b))

❗️ print문은 함수의 구성 요소 중 하나인 <수행할 문장>에 해당하는 부분일 뿐이다. 결과값은 없다. 결과값은 오직 return 명령어로만 돌려받을 수 있다.

입력값도 결과값도 없는 함수
입력값 X, 결과값 X

def say():
	print('hi')

입력 인수를 받는 매개변수도 없고 return문도 없으니 입력값도 결과값도 없는 함수이다.

여러 개의 입력값을 받는 함수 만들기

def add_many(*args):
	result = 0
	for i in args:
		result = result + i
	return result

add_many 함수는 입력값이 몇개이든 상관없다. 매개변수 이름 앞에 * 을 붙이면 입력값을 전부 모아서 튜플로 만들어 준다. add_many(1,2,3,4)도 되고 add_many(1,2,3,4,5,6,7,8)도 될 수 있다.

키워드 파라미터
키워드 파라미터를 사용할 때는 매개변수 앞에 별( * ) 두개를 붙인다.

def print_kwargs(**kwargs):
	print(kwargs)
    
print_kwargs(a=1)
-> {'a': 1}
print_kwargs(name='poo', age=5)
-> {'age': 5, 'name': 'poo'}

위처럼 매개변수 이름 앞에 별( * ) 두개를 붙이면 매개변수 kwargs는 딕셔너리가 되고 모든 key=value 형태의 결과값이 그 딕셔너리에 저장된다.

함수의 결과값은 언제나 하나이다

def add_and_mul(a,b):
	return a+b, a*b

변수는 result 하나인데 결과값은 a + b와 a b이다. 하지만 오류는 발생하지 않는다. 함수의 결과값은 2개가 아니라 언제나 1개라는 데에 이유가 있다. 결과값 a + b와 a b는 튜플값 하나인 (a + b, a * b)로 돌려준다.

매개변수에 초깃값 미리 설정하기

def say(name, old, man=True):

위에서 man=True 가 매개변수에 미리 값을 넣어준 것이다. 위의 함수를 이용해보자.

say('김철수', 30)
say('김철수, 30, True)

위의 두가지 함수는 동일한 결과를 출력한다. 초깃값이 설정되어 있기 때문이다.
Tip 초기화시키고 싶은 매개변수는 항상 뒤쪽에 놓는다.

함수 안에서 선언한 변수의 효력 범위

결론부터 말하자면 함수 안에서 사용하는 매개변수는 함수 밖의 변수 이름과는 전혀 상관이 없다.

def add(a):
	a = a + 1
    
add(5)
print(a)

다음과 같은 코드가 있다고 한다면 add(5)를 수행하면 add안에서 a는 6이 되지만 함수를 호출한 뒤에 print(a)문장은 오류가 발생한다. print(a)에서 입력받아야 하는 a 변수가 없기 때문이다.
함수안에서 선언한 매개변수는 함수 안에서만 사용되고 함수 밖에서는 사용되지 않는다.

profile
개발자꿈나무🌲

0개의 댓글