반응형
def add(a, b): # a, b는 매개변수
return a+b
print(add(3, 4)) # 3, 4는 인수
매개변수는 함수에 입력으로 전달된 값을 받는 변수
인수는 함수를 호출할 때 전달하는 입력값
함수는 들어온 입력값을 받아 어떤 처리를 하여 적절한 결괏값을 돌려준다.
입력값 ---> 함수 ----> 결괏값
입력값이 없는 함수
매개변수가 비어있다면?
>>> def say():
... return 'Hi'
...
>>> a = say()
>>> print(a)
Hi
매개변수 부분을 나타내는 함수 이름 뒤의 괄호 안이 비어있으면 입력값이 없다는 것
그러나 결괏값으로 Hi라는 문자열을 돌려준다
결과값 return이 없는 함수
호출해도 돌려주는 값이 없다
>>> def add(a, b):
... print("%d, %d의 합은 %d입니다." % (a, b, a+b))
...
변수를 따로 지정하지 않고 바로 함수명에 인자값을 넣어서 사용한다
>>> add(3, 4)
3, 4의 합은 7입니다.
만약 변수에 사용한다면...
>>> a = add(3, 4)
>>> print(a)
None # None이란 거짓을 나타내는 자료형
print문은 함수의 구성 요소 중 하나인 <수행할 문장>에 해당하는 부분일 뿐.
결괏값은 오직 return 명령어로만 돌려받을 수 있다.
입력값도 결괏값도 없는 함수
입력값도 결괏값도 없는 함수 역시 존재한다. 다음 예를 보자.
>>> def say():
... print('Hi')
...
>>>
입력 인수를 받는 매개변수도 없고 return문도 없으니 입력값도 결괏값도 없는 함수이다.
이 함수를 사용하는 방법은 단 한 가지이다.
>>> say()
Hi
즉 입력값도 결괏값도 없는 함수는 다음과 같이 사용한다.
함수이름()
입력값이 미정일때는?
def 함수이름(*매개변수):
<수행할 문장>
...
입력받은 모든 인자를 다 더하는 함수를 만들어보자
매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 준다.
>>> def add_many(*args):
... result = 0
... for i in args:
... result = result + i
... return result
...
덧셈, 곱셈 함수구현
>>> def add_mul(choice, *args):
... if choice == "add":
... result = 0
... for i in args:
... result = result + i
... elif choice == "mul":
... result = 1
... for i in args:
... result = result * i
... return result
...
>>> result = add_mul('add', 1,2,3,4,5)
>>> print(result)
15
>>> result = add_mul('mul', 1,2,3,4,5)
>>> print(result)
120
만약에 매개변수 이름앞에 **이 붙으면?
딕셔너리로 만들어진다.
>>> def print_kwargs(**kwargs):
... print(kwargs)
...
>>> print_kwargs(a=1)
{'a': 1}
>>> print_kwargs(name='foo', age=3)
{'age': 3, 'name': 'foo'}
하나의 함수에 2개의 출력값(return문)을 만들자
>>> def add_and_mul(a,b):
... return a+b, a*b
result = add_and_mul(3,4)
결과값은 7,12
튜플값의 2개의 변수에 저장하고 싶다면
result1, result2 = add_and_mul(3, 4)
result1은 7
result2은 12
그러나 다음처럼 리턴문을 2개만든다면?
>>> def add_and_mul(a,b):
... return a+b
... return a*b
...
이 함수는 하단 함수와 동일하다
>>> def add_and_mul(a,b):
... return a+b
함수는 return문을 만나는 순간 결괏값을 돌려준 다음 함수를 빠져나가기 때문
continue처럼 쓸 수 있는 return
>>> def say_nick(nick):
... if nick == "바보":
... return
... print("나의 별명은 %s 입니다." % nick)
...
만약에 입력값으로 '바보'라는 값이 들어오면 문자열을 출력하지 않고 함수를 즉시 빠져나간다.
>>> say_nick('야호')
나의 별명은 야호입니다.
>>> say_nick('바보')
>>>
반응형
'● 알고리즘, 자료구조 > 2019 알고리즘' 카테고리의 다른 글
최대공약수 GCD 알고리즘. 유클리드. (0) | 2019.09.25 |
---|---|
파이썬 기초. 리스트. 집합. 반복비교 (0) | 2019.09.25 |
python 딕셔너리 (0) | 2019.09.24 |
python switch (0) | 2019.09.24 |
python 무한루프의 차이점 while(1), while(true) (0) | 2019.09.17 |