목록개인공부(WEB, Python, DB)/Python (176)
ChainSmoker’s Block
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qcqu4/btrWwg7IJKo/QPyRVqukKRpFVd6P8GzeNK/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================매개변수에 초깃값 미리 설정하기 : 1_23에 이어 설명. def say_myself(name, old, man=True):를 def say_myself(name, man=True, old):로 바꿔볼 경우 함수를 실행 시 오류가 발생한다. 오류 없이 호출하기 위해서는 say_myself("박현준", 26)과 같이 호출하여 name변수에는 "박현준"이 들어갈 것이다. 하지만 파이썬 인터프리터는 26을 man변수와 old변수 중 어느곳에 대입해야 할지를 알 수 없게 된다. 해당 오류 메세지는 초깃값을 설정해 놓은 매개변수 뒤에 초깃값을 설정해 놓지 않은 매개변수는 사용할 수 없다는 뜻이다. 즉 매개변수로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHzkjQ/btrWzVgrlhO/HiW7PNkQRVDsNmb8EBWJp1/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================매개변수에 초깃값 미리 설정하기 : 1_22에 이어 설명. 이제 초깃값이 설정된 부분을 False로 바꾸자. man변수에 False값이 대입되어 위 예시와 같은 결과가 출력된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l9IyG/btrWx6pfpvU/kciwOpDmvMO5iVDvO07BIK/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================매개변수에 초깃값 미리 설정하기 : say_myself()함수는 아래와 같이 사용 가능하다. 입력값으로 "박현준", 26처럼 2개를 주면 name에는 "박현준"이 old에는 26이 대입된다. 그리고 man이라는 변수에는 입력값을 주지 않았지만 초깃값 True를 갖게 된다. 따라서 위 예시에서 함수를 사용한 두 가지 방법은 모두 동일한 결과를 출력한다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b7C0bz/btrWuOKoIhp/ms6FMBQlvpHNIJGnsijHbK/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================매개변수에 초깃값 미리 설정하기 : 함수의 인수를 전달하는 방법 - 매개변수에 초깃값을 미리 설정해주는 경우 위 함수에서는 매개변수가 name, old, man=True로 3개이다. 낯선 것은 man=True이다. 이 매개변수처럼 미리 값을 넣어준 것이다. 이 방법이 바로 함수의 매개변수 초깃값을 설정하는 방법이다. 함수의 매개변수에 들어갈 값이 항상 변하는 것이 아닐 경우에는 이렇게 함수의 초깃값을 미리 설정해 두면 유용하다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bcxZUQ/btrWv8BR3AE/HKeY2KoKhR1CPI3Hd1oj0k/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================함수의 결괏값은 언제나 하나이다 : 1_19에 이어 설명. 이유는 add_and_mul()함수를 호출해보면 알 수 있다. 위 예시에서 볼 수 있듯이 두 번째 return문인 return a*b는 실행되지 않았다. 따라서 이 함수는 아래 예시와 동일하다. 함수는 return문을 만나는 순간에 결괏값을 도출해 돌려준 다음 함수를 빠져나가게 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DtziS/btrWbUbyyPs/kk7x9ZFmzExsKwXD25nmO0/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================함수의 결괏값은 언제나 하나이다 : 1_18에 이어 설명. 만약 이 하나의 튜플 값을 2개의 결괏값처럼 받고 싶다면 아래와 같이 함수호출이 필요하다. 이렇게 호출될 경우엔 result1, result2 = (7, 12)가 되어 result1은 7이 되고 result2는 12가 된다. 이렇다면 의문이 생길 수도 있다. 위와 같이 return문을 2번 사용하게 되면 2개의 결괏값을 돌려주지 않을까? 하지만 파이썬에서 위와 같은 함수는 참 어리석을 수 있는 함수이다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bYO2hd/btrWcqnBEGP/YzWcNBN3TJUg0RXfYkEkh0/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================함수의 결괏값은 언제나 하나이다 : 다음 예시에서 볼 수 있는 함수를 만들어보자. 이 함수를 아래와 같이 호출하면 결과는? 결괏값은 a+b와 a * b 2개인데 결괏값을 받아들이는 변수는 result 하나만 쓰였으니 오류가 발생하지 않을까? 당연한 의문이 들 수 있다. 하지만 오류발생은 없다. 그 이유는 함수의 결괏값은 2개가 아니라 언제나 1개라는 것이 있다. add_and_mul함수의 결괏값 a+b와 a * b는 튜플값 하나인 (a+b, a * b)로 돌려준다. 따라서 resuolt변수는 위와 같은 값을 가지게 된다. 즉 결괏값으로는 (7, 12)라는 튜플값을 갖게 되는 것이다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uudSk/btrV8NkCNey/dWnMqSOytk3k9DWRIhixL1/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까? : 1_16에 이어 설명. add_mul함수는 여러 개의 입력값을 의미하는 *args 매개변수 앞에 choice 매개변수가 추가되어 있다. 이 함수는 아래 예시와 같이 사용 가능하다. 매개변수 choice에 'add'가 입력된 경우 *args에 입력되는 모든 값을 더해서 15를 돌려주고, 'mul'이 입력된 경우 *args에 입력되는 모든 값을 곱해서 120을 돌려준다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dJxtGa/btrWbEGNVwG/jkiqSKIfDhV4gk78ojko11/img.png)
[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까? : 1_15에 이어 설명. 여러 개의 입력을 처리할 때 def add_many(*args)처럼 함수의 매개변수로 *args만 사용할 수 있는 것은 아니다. 아래 예시를 보자.