파이썬 함수, 매개변수, 복수 파라미터(*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형태의 결과값이 딕셔너리에 저장된다.
'DEV > 파이썬 이론' 카테고리의 다른 글
파이썬 코딩 :: 파이썬 if 조건문 문법, 예제 (0) | 2022.08.15 |
---|---|
파이썬 코딩 :: 파이썬 for, while 반복문 문법, 예제 (0) | 2022.08.15 |
파이썬 코딩 :: 파이썬 문자열 formatting(f-string, format, %) (0) | 2022.08.15 |
파이썬 코딩 :: 파이썬 Pygame, 게임 만들기_공 피하기 (0) | 2022.08.13 |
파이썬 코딩 :: 파이썬 Pygame, 게임 만들기_똥 피하기 (0) | 2022.08.13 |
댓글