본문 바로가기
DEV/파이썬 이론

파이썬 코딩 :: 파이썬 함수, 매개변수, 복수 파라미터(*args, **kwargs)

by 올커 2022. 8. 15.

파이썬 함수, 매개변수, 복수 파라미터(*args, **kwargs)


파이썬에서 함수를 선언하게 되면 간단히 아래와 같이 사용한다.

def func01(x) : 
	...
	return x*2

print(func01(3))

이 때 함수에는 return문이 존재하는데 역할은 아래와 같다

  - 값 반환

  - 함수를 즉시 종료

그렇기 때문에 아래와 같은 사용은 유의하도록 한다

(1) 함수의 return 문 이후에 코드 작성

def funplus(x) : 
    print("계산을 시작합니다")
    return(x + x)
    print("계산을 끝냅니다")
   
print(funplus(3))
print("계산이 완료되었나요?")

############## 결과 #####################
## 계산을 시작합니다
## 6
## 계산이 완료되었나요?

위의 코드를 보면 funplus라는 함수를 선언하는데

  (1) "계산을 시작합니다" 라는 문자열을 먼저 출력

  (2) x+x 결과를 return으로 반환하며 종료된다.

그렇기 때문에 4번째 줄의 "계산을 끝냅니다" 라는 문자열은 출력되지 않음을 확인할 수 있다.

(2) 결과를 출력하려는 경우에는 return이 아닌 print를 꼭 넣어줄 것

 함수에서 return은 결과를 반환하는 것이지, 출력하지는 않는다.

 따라서 함수 자체에 print문이 없다면 아래와 같이 코드를 작성하여 별도로 출력해야 한다.

print(함수명(변수))

(3) 함수의 매개변수 사용하기

 함수를 사용할 때 변수를 지정하고 싶을 때가 있는데, 이 때 매개변수를 지정하여 사용이 가능하다.

 예를 들어 아래와 같은 함수가 있다고 가정한다.

def cal(a, b):
	return a + 2 * b
    
result = cal(1, 2)
print(result)

>>> 5

 매개변수를 지정하면 위의 식은 아래와 같이 변경된다.

def cal(a, b):
	return a + 2 * b
    
## 식(1)
result = cal(a = 1, b = 2)
print(result)

>>> 5

## 식(2)
result = cal(b = 2, a = 1)
print(result)

>>> 5

 변수를 사용식에 지정하게 되면 식(1)과 식(2)와 같이 매개변수 위치를 변경해주어도 사용이 가능하다.

 

또, 함수에서 디폴트(default) 매개변수도 사용이 가능하다.

def cal(a, b=2):
	return a + 2 * b

## 식(3)
result = cal(1)
print(result)

>>> 5

## 식(4)
result = cal(1, 3)
print(result)

>>> 7

 먼저 함수를 보면 def cal(a, b=2)로 표현되어있다.

 이는 b값을 넣지 않았을 경우 2를 넣어주겠다는 표현이다.

 식 (3)을 보면 a에 대한 매개변수만 넣었을 때, b=2가 적용된 결과를 반환하고,

 식 (4)를 보면 a와 b가 모두 주어졌기 때문에 b=3이 적용된 결과를 반환한다.

(4) 함수의 매개변수 무제한으로 받기 : *args

 함수의 변수를 *args로 지정했을 때에는 함수를 사용할 때 변수를 무제한으로 사용이 가능하다.

def 함수이름(*매개변수):
	수행할 문

 *매개변수는 관례적으로 *args로 많이 사용된다(*args : arguments)

def cal(*args):
    for name in args:
        print(f'{name} 학교가자')

cal('홍길동', 'John')


>>> 홍길동 학교가자
>>> John 학교가자

 위의 식처럼 결과값이 모두 반환되는 것을 볼 수 있다.

(5) 함수의 키워드 파라미터 : **kwargs

 함수의 변수를 **kwargs로 지정함을 통해 딕셔너리로 출력값을 받을 수 있다.

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

print_kwargs(a=1)
print_kwargs(name='John', age=33)

>>> {'a': 1}
>>> {'name': 'John', 'age': 33}

 즉 이름 앞에 **을 붙인 매개변수는 딕셔너리가 되고, 모든 key=value형태의 결과값이 딕셔너리에 저장된다.

 

반응형

댓글