세조목

PYTHON 정리(점프투파이썬 - 함수: kwargs까지)(24.01.03) 본문

데이터 분석 공부/Python

PYTHON 정리(점프투파이썬 - 함수: kwargs까지)(24.01.03)

세조목 2024. 1. 3. 21:03
  • 본 내용들은 PYTHON을 공부하면서 차후 제가 복습하기위해 정리해놓은 것으로 제가 새롭게 알게된 내용들만을 정리하였습니다. 또한 배움이 부족하여 미처 다 파악하지 못한 부분들도 많으니 혹시나 이 포스팅을 보시는 분들께서는 다른 포스팅, 도서, 강의도 함께 참고하시기 바라겠습니다.

 

매개변수와 인수

파라미터(=매개변수): 함수를 생성할때 괄호 안에 넣는 변수

아규먼트(arguments) (=(전달)인자): 함수를 사용할 때 실제 입력하는 값

def minus(a, b):
	return a-b
    
c = minus(5,3)
print(c)
>>> 2

위 예시에서 a, b가 파라미터(=매개변수)이고, 5, 3이 아규먼트(=(전달)인자)다.

 

입력값이 없는 함수

입력값이 없는 함수가 있을수 있다.

이 경우에는 함수를 만들때 반환값을 미리 정해둬야한다.

예시는 다음과 같다.

def food():
	return "doughnut"
    
a = food()
print(a)
>>> 'doughnut'

 

리턴값이 없는 함수

리턴값이 없는 함수도 있을수 있다.

리턴값이 없는 함수는 함수를 지정할 때 리턴값을 입력할 자리에 print( )를 입력해준다.

예시는 다음과 같다.

def feel(a, b):
	print("{0}일때도 있고 {1}일때도 있다.".format(a, b))
    
feel(3, 5)
>>> '3일때도 있고 5일때도 있다.'

예시를 살펴보면 함수를 지정한 다음 리턴값을 지정해준 것이 아니라 print( ) 를 넣어줌으로써

함수에 입력값을 입력했을때 print 함수에 적어둔 내용이 출력된다.

 

입력값, 리턴값 모두 없는 함수

입력값과 리턴값이 모두 없는 함수도 존재할까?

다음과 같은 예시처럼 입력값과 리턴값이 모두 없는 함수가 존재한다.

def emotion():
	print("happy")
    
emotion()
>>> 'happy'

 

매개변수를 지정하여 호출하기

함수를 호출할 때 매개변수를 지정할 수도 있다.

다음과 같은 함수가 있다고 가정해보자.

def solution(a, b):
	return a*b

 

일반적으로는 solution함수에 인자 두개를 입력시켜주면 두 수가 곱해진 값이 반환될 것이다.

그러나 매개변수를 직접 지정해서 값을 반환할 수도 있는데

solution(a=8, b=8)
>>> 64

위 예시에서와같이 각각의 매개변수에 어떤 값이 들어갈지를 지정해주는 것이다.

이 때 매개변수의 위치는 아래와같이 바뀔 수 있다.

solution(b=8, a=8)
>>> 64

 

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

매개변수 앞에 *을 붙이면 입력값을 전부 모아 튜플로 만들어주고 여러 개의 입력값을 받는 함수를 만들 수 있다.

예시는 다음과 같다.

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

 

이렇게 함수를 만들어놓고 args에 원하는 인자를 넣어주면

여러 인자들끼리 합산이 된다.

입력값은 몇 개이든 상관이 없다.

result = add_money(34, 52, 843)
print(result)
>>> 929

 

매개변수 앞에 매개변수 하나를 더 추가할 수 있다.

이 때 새롭게 추가하는 매개변수는 조건지정의 대상이 되는 매개변수다.

예시를 보면서 무슨 이야기인지 살펴보자.

def add_money(select, *args):
	if select == "a":
    	result = 0
        for i in args:
        	result+=i
    elif select == "b":
    	result = 1
        for i in args:
	    	result*=i
    return result

select가 a일때와 b일때의 산식이 달라지는걸 확인할 수 있다.

select가 a라면 reuslt는 0이고 result에 args매개변수의 입력값들이 모두 result에 더해진다.

select가 b라면 result는 1이고 result에 args매개변수의 입력값들이 모두 result에 곱해진다.

 

키워드 매개변수, kwargs

매개변수 kwargs입력값을 딕셔너리화시켜주는 함수다.

 ※ kwargs는 keyword arguments의 약자임

여러개의 값을 입력받을때는 매개변수 앞에 *을 넣어줬다면

키워드 매개변수 앞에는 **을 넣어준다.

이 때 리턴값은 없다.

함수는 아래와같이 작성하면 된다.

def print_kwargs(**kwargs):
	print(kwargs)

만들어진 함수를 한번 사용해보자

print_kwargs(name="Kim")
>>> {'name' : 'Kim'}

print_kwargs(name='Kim', age=33)
>>> {'name' : 'Kim', 'age' : 33}

kwargs가 입력값을 딕셔너리화 시켜준다고 얘기했던것처럼

"name = 'Kim' "을 입력했을때는 {'name' : 'Kim'}을

"name = 'Kim' ", "age = 33"을 입력했을때는 {'name' : 'Kim', 'age' = 33}이 출력된다.