-
반응형
지난 포스팅은 파이썬 사용자 정의 함수 만드는 기본 방법을 알아 보았습니다.
이번 포스팅은 함수 정의시 매개변수, 리턴 값 등에 대한 내용을 다루려고 합니다.
● 함수 매개변수 정의 방법?
함수는 매개변수가 없을 수도 있고 여러 개 있을 수도 있습니다.
매개변수가 없는 것은 이전 포스팅에서 다루었고 매개변수가 1개 이상 있는 함수를 다루려고 합니다.
예를 들어 설명합니다.
인자로 전달되는 값을 매개변수가 x 가 받아서 출력하는 함수입니다.
## 출력함수를 정의 합니다.
>>> def in_print( x ) :
print( x )
## 아래 예제 들은 자료형에 상관없이 매개변수에 전달되는 자료형을 파이썬이 알아서 자료형을 인지하고 받아들입니다.
## 숫자형 인자를 전달합니다.
>>> in_print( 1 )
1
## 문자열 인자를 전달합니다.
>>> in_print( "abcd" )
abcd
## 자료형 인자를 전달합니다.
>>> in_print( [ 1, 2, 3, 4])
[1, 2, 3, 4]
>>>
## 튜플형 인자를 전달합니다.
>>> in_print( [('a', 1), ('b',2)])
[('a', 1), ('b', 2)]
## 매개변수의 개수가 다를때를 오류가 발생합니다.
>>> in_print( 1, 2 )
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
in_print( 1, 2 )
TypeError: in_print() takes 1 positional argument but 2 were given
>>>● 함수 매개변수 여러 개 정의
입력 값이 여러 개 일 때는 콤마 구분자를 사용합니다.
예제를 통해 알아봅니다.
## 입력 받은 3개의 매개변수를 합하는 함수입니다.
>>> def user_sum( x, y, z ) :
return x + y + z
## 인수는 순서대로 전달이 됩니다. 1 -> x, 2-> y, 3 -> z 로 전달됩니다.
>>> print( user_sum( 1, 2, 3 ) )
6
>>> print( user_sum( 3, 4, 5 ))
12
## 파이썬이 매개변수를 받을 땐 자료형을 알아서 받아주지만 return x + y + z 에서 숫자와 문자를 더 할 수 없어서 오류가 발생합니다.
>>> print( user_sum( 1, ‘a’, 4 ))
Traceback (most recent call last):
File “<pyshell#23>”, line 1, in <module>
print( user_sum( 1, ‘a’, 4 ))
File “<pyshell#20>”, line 2, in user_sum
return x + y + z
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
>>>
## 인수의 개수가 달라도 오류가 발생합니다.
>>> print( user_sum( 1, 2 ) )
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
print( user_sum( 1, 2 ) )
TypeError: user_sum() missing 1 required positional argument: 'z'● 함수 매개변수의 이름을 지정하여 호출
함수를 호출시 순서가 틀려도 매개변수 이름을 지정하여 호출할 수 있습니다.
예제를 통해 알아봅니다.
## 함수를 정의 합니다.
>>> def subtraction( x, y ):
return x - y
## 5 -> x, 3 -> y에 전달되어 5 -3의 결과가 나옵니다.
>>> a = subtraction( 5, 3)
>>> print(a)
2
## x->3, y -> 5 이므로 3 -5 의 결과가 나옵니다.
>>> a = subtraction( y=5, x=3)
>>> print(a)
-2즉 매개변수명이 지정이 되면 지정 된 대로, 지정이 안되면 순서대로 전달됩니다.
● 함수 매개변수의 개수를 가변으로 하고 싶을 경우
함수정의시 같은 기능을 하지만 함수 호출 시 마다 인수의 개수가 달라질 경우 이때마다 함수를 정의해서 사용하는 것이 아니고, 가변의 매개변수를 정의 할 수 있습니다. 매개변수명 앞에 ‘*’를 사용합니다.
예제를 통해 알아 봅니다.
## 가장 큰 값을 구하는 함수를 정의합니다.
>>> def max( *args ) :
ret = args[0]
for x in args:
if x > ret : ret = x
return ret
>>> print( max( 1,4, 6, 3, 8 ) )
8
>>> print( max( 9, -10, -4, 3, 5, 0, 1 ))
9
>>> print( max( 1) )
1
>>> print( max( 1, 6))
6
>>> print( max( 'c', 'a', 'b' ))
c
>>>매개변수가 어떻게 전달되는지 궁금하여 함수안에 print 를 코딩하여 출력해 보았습니다.
아래 예제를 보면 튜플 형식으로 전달이 됩니다.
>>> def max( *args ) :
print( args )
ret = args[0]
for x in args:
if x > ret : ret = x
return ret
>>> max( 1,4, 6, 3, 8 )
(1, 4, 6, 3, 8)
8
>>> max( 9, -10, -4, 3, 5, 0, 1 )
(9, -10, -4, 3, 5, 0, 1)
9
>>> max( 'c', 'a', 'b' )
('c', 'a', 'b')
'c'
>>>● 함수의 매개변수 디폴트값(초기값) 설정 방법
파이썬의 내장 함수를 사용하다 보면 실제 정의되어 있는 매개변수는 있는데 인자로 전달하지 않아도 되는 값들이 있습니다.
또한 이 매개변수들은 기본 설정 값이 있어서 인자로 전달하지 않으면 기본 설정 값이 사용되어집니다.
함수 정의 방법은 아래 예제를 통해 알아봅니다.
마지막 매개변수인 option 이 True이거나 값이 없으면 곱하기를 False 이면 나누기를 하는 함수 입니다.
>>> def calculate( x, y, option=True ) :
if option : ret = x * y
else : ret = x/y
return ret
>>> calculate( 8 ,4, True )
32
## 값이 없어서 초기값이 True가 되어 곱하기를 합니다.
>>> calculate( 8 ,4 )
32
## 나누기를 합니다.
>>> calculate( 8 ,4, False )
2.0
>>>함수의 매개변수 설정하는 방법들에 대해 알아보았습니다.
다음 포스팅은 함수의 결과값을 전달하는 return에 대해 알아봅니다.
반응형'IT 이야기 공간 > 프로그램 언어' 카테고리의 다른 글
파이썬 함수 딕셔너리 (키워드 가변길이 ) 인자 전달 방법 (0) 2020.06.29 파이썬 함수 여러개 리턴하기 (0) 2020.06.29 파이썬 사용자 정의 함수 만들기 (0) 2020.06.27 파이썬 제어문 - 반목문 while문 (0) 2020.06.26 파이썬 제어문 - 반목문 for문 (1) 2020.06.25