PYTHON. 04장 프로그램의 입력과 출력. 04-1 함수
PYTHON/CONCEPT 2018. 1. 7. 00:49 |PYTHON. 04장 프로그램의 입력과 출력. 04-1 함수
파이썬 함수의 구조
def sum(a, b): return a + b
>>> a = 3 >>> b = 4 >>> c = sum(a, b) >>> print(c) 7
* 입력값과 결과값에 따른 함수의 형태
입력값 ---> 함수 ----> 리턴값
입력값 ---> 함수 ----> 리턴값
- 일반적인 함수
- 입력값이 없는 함수
- 결과값이 없는 함수
- 입력값도 결과값도 없는 함수
입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?
여러 개의 입력값을 받는 함수 만들기
함수의 결과값은 언제나 하나이다
>>> result = sum_and_mul(3,4)
result = (7, 12) // 오류 발생 X (함수의 결과값은 2개가 아니라 언제나 1개이다. 튜플값 하나인 (a+b, a*b)로 돌려준다)
>>> sum, mul = sum_and_mul(3, 4) // sum, mul = (7,12)가 되어 sum은 7이되고, mul은 12가 된다.
예제2)
>>> def sum_and_mul(a,b): ... return a+b // 이것만 실행되고 ... return a*b // 이것은 실행되지 않는다 ... >>>
>>> result = sum_and_mul(2, 3) >>> print(result) 5
>>> def sum_and_mul(a,b): // 이것과 동일하다 ... return a+b ... >>>
[return의 또 다른 쓰임새]
어떤 특별한 상황이 되면 함수를 빠져나가고자 할 때는 return을 단독으로 써서 함수를 즉시 빠져나갈 수 있다.
>>> def say_nick(nick):
... if nick == "바보":
... return
... print("나의 별명은 %s 입니다." % nick)
...
>>>
위의 함수는 입력값으로 nick이라는 변수를 받아서 문자열을 출력한다. 이 함수 역시 리턴값은 없다(문자열을 출력한다는 것과 리턴값이 있다는 것은 전혀 다른 말이다. 혼동하지 말자. 함수의 리턴값은 오로지 return문에 의해서만 생성된다).
만약에 입력값으로 '바보'라는 값이 들어오면 문자열을 출력하지 않고 함수를 즉시 빠져나간다.
>>> say_nick('야호')
나의 별명은 야호입니다.
>>> say_nick('바보')
>>>
* 입력 인수에 초깃값 미리 설정하기
def say_myself(name, old, man=True): // man=True는 초기값 설정 print("나의 이름은 %s 입니다." % name) print("나이는 %d살입니다." % old) if man: print("남자입니다.") else: print("여자입니다.")
(※ say_myself 함수는 3개의 입력 인수를 받아서 마지막 인수인 man이 True이면 "남자입니다.", False이면 "여자입니다."를 출력한다.)
say_myself("박응용", 27) say_myself("박응용", 27, True)
// 둘다 동일한 결과를 출력한다
나의 이름은 박응용입니다. 나이는 27살입니다. 남자입니다.
say_myself("박응선", 27, False)
나의 이름은 박응선입니다. 나이는 27살입니다. 여자입니다.
* 함수 입력 인수에 초깃값을 설정할 때 주의할 사항
함수 안에서 선언된 변수의 효력 범위
그렇다면 vartest라는 함수를 이용해서 함수 밖의 변수 a를 1만큼 증가시킬 수 있는 방법은 없을까? 이 질문에는 2가지 해결 방법이 있다.
함수 안에서 함수 밖의 변수를 변경하는 방법
1. return 이용하기
# vartest_return.py a = 1 def vartest(a): a = a +1 return a a = vartest(a) print(a) // 2
2. global 명령어 이용하기
# vartest_global.py a = 1 def vartest():// 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다. global a a = a+1 vartest() print(a)
프로그래밍을 할 때 global 명령어는 사용하지 않는 것이 좋다.
왜냐하면 함수는 독립적으로 존재하는 것이 좋기 때문이다.
외부 변수에 종속적인 함수는 그다지 좋은 함수가 아니다.
그러므로 가급적 global 명령어를 사용하는 이 방법은 피하고 첫 번째 방법(return)을 사용하기를 권한다.
'PYTHON > CONCEPT' 카테고리의 다른 글
PYTHON. 04장 프로그램의 입력과 출력. 04-3 파일 읽고 쓰기 (0) | 2018.01.08 |
---|---|
PYTHON. 04장 프로그램의 입력과 출력. 04-2 사용자 입력과 출력 (0) | 2018.01.08 |
PYTHON. 03 프로그램의 구조를 쌓는다! 제어문. 03-3 for문 (0) | 2018.01.06 |
PYTHON. 03 프로그램의 구조를 쌓는다! 제어문. 03-2 while문 (0) | 2018.01.02 |
PYTHON. 03 프로그램의 구조를 쌓는다! 제어문. 03-1 if문 (0) | 2018.01.02 |