파이썬(python) 강의 7장
- 함수 -
프로그래밍하기 위해서 앞의 장에서 다룬 것과 같이 단순한 형태로 작성하게 되면 엄청나게 많은 코드를 작성해야한다. 간단하게 aaa라는 문자열을 출력할 때에도 aaa라는 문자열을 출력하는 print문을 계속 사용해서 작성해야한다. 이렇게 되면 코드의 길이가 길어지게 되고 가독성, 즉 코드가 무엇을 의미하는지를 알기 어렵다. 이를 위해 함수라는 개념을 도입해서 중복을 줄이고자 한다. 함수는 수학에서 사용하는 함수를 생각하면 되는데 수학에서 특정 입력하는 값에 따라 결과 값을 나타나게 해주는 것이 함수이다. 보편적으로 x와 y를 사용하는데 특정 규칙을 가지고 x를 y라는 결과 값으로 바꾸어준다. 이와 똑같게 파이썬에서 사용하는 함수도 특정한 입력 값으로 특정 결과 값을 나타나게 해준다. 물론 이에 대해 특정한 규칙이 존재하고 이 규칙은 실제 프로그래밍을 할 때 중복을 방지시켜준다. 실제로 앞에서 말한 print도 함수의 일종이다. 특정 값을 받으면 그것을 출력시켜서 보여주라는 결과 값을 가진 함수이다. 파이썬 자체에서 내장으로 가지고 있어서 사용을 하지만 만약 없었다면 이에 대한 명령어를 출력할 때마다 모두 작성해 주어야한다. len과 같은 것들도 모두 함수라고 할 수 있다.
함수는 def 라는 명령을 통해서 만들 수 있다. def라는 구문 후에 만들고자하는 함수의 이름을 작성하고 :를 넣는다. 그 후 실행하고자 하는 코드를 작성하게 되면 함수가 완성하게 된다. 예를 들어 a를 세 번 출력시키는 함수를 작성한다고 하자. a3이라는 이름을 가지게 되고 함수라는 의미로 ()라는 괄호가 뒤에 나타나게 된다. def 구문 아래에 a3() 함수가 실행하고자 하는 동작인 print를 넣게 된다. 이를 실행하기 위해서는 a3()라는 구문만 사용하면 쉽게 사용할 수 있다.
함수는 리턴 값을 가질 수 있다. 앞의 예시와 같이 단순히 출력을 하는 명령을 수행할 수도 있지만 함수가 종료되고 난 후 특정한 값을 나타나게 해줄 수 있다. 이 값을 리턴 값이라고 한다. 다음의 예시를 보게 되면 return이라는 명령과 ‘aaa’가 나오는 것을 알 수 있다. 이것이 바로 리턴 값이다. return이라는 명령어가 나오게 되면 함수가 종료되고 이에 대한 값으로 리턴 값을 반환하게 된다. 이 값은 상수 또는 문자열과 같은 값이므로 실행을 시킬 때 print 구문을 사용하여 실행을 시켜야 출력이 된다. return에 아래위로 before와 after를 출력하는 명령이 있는데 return을 사용하게 되면 그 때 바로 함수가 종료되어 after에 대한 출력은 진행되지 않는다. 여기서 혼란이 있을 수도 있지만 before를 출력하는 것은 a3()라는 함수가 실행되면 나타나는 것이고 aaa라는 문자열은 a3()가 실행된 후에 반환되는 값으로 마지막의 print(a3())는 print(‘aaa’) 로 바뀌는 거라고 생각하면 된다.
반환하는 결과 값이 있으면 입력하는 값도 있기 마련이다. def를 통해 정의된 함수는 입력 값을 받을 수 있다. 만약 a를 내가 원하는 수만큼 찍고 싶다고 생각해보자. 그러면 3개를 찍는 함수와 4개를 찍는 함수, 5개를 찍는 함수 등등을 계속 만들게 되면 매우 힘들 것이다. 그러면 원하는 값을 입력으로 받아 그 수만큼 반환을 하면 편하게 될 것이다. 입력 값은 함수를 정의하는 곳에서 () 괄호 안에 넣어주면 된다. 괄호 안에 넣어준 값을 통해 밑의 명령을 수정시켜주면 원하는 수의 a를 찍을 수 있다. 이를 조금 더 활용하여 원하는 알파벳을 원하는 수로 반환하고 싶을 때는 두 개의 입력 값을 받으면 된다. 입력 값은 서로 ,를 이용하여 구분을 할 수 있다.
이를 통해 앞 장에서 사용한 로그인 방식을 함수를 이용하여 만들어보자. 로그인에서 사용자가 맞는지 아닌지를 구별하는 방법에 함수를 사용할 것이다.
'파이썬' 카테고리의 다른 글
파이썬(python) 강의 9장 - 객체 지향 프로그래밍 - (0) | 2017.05.29 |
---|---|
파이썬(python) 강의 8장 - 모듈(module) - (0) | 2017.05.23 |
파이썬(python) 강의 6장 - 컨테이너와 반복문 - (0) | 2017.05.19 |
파이썬(python) 강의 5장 - 입력과 출력 & 논리 연산자 - (0) | 2017.05.16 |
파이썬(python) 강의 4장 - 비교 연산자와 조건문 - (0) | 2017.05.16 |