본문 바로가기

프로그래밍 언어/AI & 파이썬_Python

파이썬 Python 코딩_06_함수

Function(펑션; 함수)는 어떤 기능을 하는 코드를 하나의 그룹으로 묶어 놓은 것이다.

function이 '기능'이라는 뜻이 가진 것으로도 추측할 수 있다.

즉 어떤 값을 어떤 기능을 가진 함수에 넣으면(입력하면) 그 함수의 기능에 맞게 변환하여 출력하게 된다.

 

입력 >>>함수 >>> 출력

 

함수의 개념을 생각하면 컴퓨터도 수 많은 함수의 기능을 가진 기기라고 할 수 있다.

키보드와 마우스로 입력하면 각각의 함수 기능에 맞춰서 화면에 출력해 준다.

 

파이썬에서 지금까지 사용했던 print()라는 것도 함수이다.

이 함수의 기능은 괄호 안에 입력한 것을 화면에 출력하는 기능을 가지고 있다.

이 기능이 이미 만들어져서 파이썬에 들어 있기 때문에 사용할 수 있는 것이다.

 

이 처럼 함수는 어떤 기능을 만들어야 할 때 유용하게 사용할 수 있다.

파이썬에서 함수를 만들때는 def 라는 함수 선언 키워드를 사용한다. 코틀린에서는 fun을 사용했었다.

def는 definition(데피니션; 정의)라는 글자의 약자를 사용한 것 같다.

즉, '함수의 정의'를 선언하고 뒤에 그 함수의 이름을 붙인다.

그래서 전형적인 함수의 모양은 아래와 같다.

 

def 함수명(매개변수):

 

함수가 왜 필요한 지 만들어 보면서 확인해 보자.

 

예를 들어 두 사람이 대화하는 문장을 출력한다고 하자.

Tom(탐)이 몇 살이냐고 묻고 Wraven이 대답하는 문장이다.

 

마우스로 끌어서 선택한 후 복사(Ctrl+C) 후 3번 붙여넣고 실행하면 다음과 같이 될 것이다.

 

 

이렇게 여러번 사용해야 할 때 함수를 만들어 두면 간단하고 편리하게 쓸 수 있다.

위 코드를 함수로 만들어 보자.

 

함수를 정의하는 키워드 def를 적고 함수이름을 chat(챝; 담소)라고 정하기로 한다.

함수의 내용이 되는 부분은 오른쪽으로 들여쓰기 후 적는 것이 관습이다.

위와 같이 함수를 만든 후에는 이제 함수명만 입력하면 함수가 그 내용을 실행한다.

 

 

그런데 대화하는 사람의 이름이 수시로 바뀐다고 하면 매번 고쳐야 하므로 불편하다.

이때는 매개변수(parameter; 파라미터)를 사용해서 문제를 해결할 수 있다.

 

괄호 안에 매개변수를 적당한 이름을 지어 넣는다. 여기서는 사람 이름이므로 name1, name2로 했다.

사람 이름(Tom, Wraven) 이 있던 자리에는  %s를 대신 넣는데 이것은 코틀린에서 사용했던 자리 소유자(place holder) 역할과 비슷한 것 같다. 즉 뒤에 s는 string(문자열)의 첫글자이며 '여기는 문자열이 올 자리다'라는 것을 나타낸다. %s에 들어올 값은 마지막에 '%값' 형태로 적어준다. 여기서는 % name1 으로 값을 매개변수 이름으로 적었다.

 

요약하면 아래와 같은 모양을 만들 수 있다.

 

"문자열" % 값

 

위 모양으로 만들면 값(value)이 문자열 안으로 들어갈 수 있다는 것인데, 어느 부분에 들어가는 지를 표시할 때 문자열일 때는 %s 로 표시하고, 정수일 때는 %d , 부동소수점 또는 실수인 경우에는 %f로 자리 표시를 해준다. 이런 것을 formatting(포맽팅; 형식화)라고 부른다.

 

결국 chat("Tom", "Wraven") 함수를 실행하면 다음과 같은 과정을 거쳐 실행한다.

 

1. 정의된 chat함수를 찾는다.

2. 매개변수 2개를 만든다.

3. 출력(print)함수를 확인한다.

4. %s에 들어갈 값을 마지막에 % 다음에 있는 값으로 확인한다. 

5. name1이 첫번째 매개변수 이름이므로 실행할 chat()함수의 첫번째 문자 Tom을 가져와서 %s자리에 대신 넣는다.

6. 문자열을 출력한다. (Tom: Hi, how are you?)

 

대충 이런 식으로 함수를 실행하는 과정을 거치는 것이다.

 

만약 값이 여러 개 일때는 괄호로 묶어서 표시한다.

예를 들어 다음과 같이 표현한다.

 

"%s의 나이는 %d이다" %("Wraven" , 55)

 

이것을 응용하면 다음과 같이 함수를 수정할 수 있다.

 

매개변수에 age(나이)를 하나 더 만들고 chat 함수에도 숫자 값을 넣어주면 된다.

 

함수를 하나 더 배워보자.

다음과 같은 코드가 있다고 하자.

 

위와 아래 코드가 서로 같은 구조를 가지고 있다는 것을 알 수 있다.

이것을 함수로 표현해 본다.

함수명은 plus_sum(더하기_합)이라고 하고 매개변수는 a, b 2개를 넣는다.

다음 줄에 result(리절트; 결과)라는 변수를 만들고 이 변수에 a + b 값을 저장하는 코드를 적었다.

return(리턴; 되돌리다) 은 '반환문'이라는 함수다.

리턴문의 기능은 값을 호출한 곳에 반환(돌려줌)하는 것이다.

여기서는 a + b 를 계산한 값을 result 변수에 돌려주어 결국 plus_sum 함수가 그 계산한 값을 가지게 된다.

 

다음 줄에 변수 c를 만들고 여기에 plus_sum 함수와 매개변수를 입력해 주고 변수c의 값을 확인해 보면 3이 나온다.

만약 return만 적으면 값을 돌려주지 않고 계산만 하기 때문에 아무 값도 얻을 수가 없다.

 

None(아무것도 없음)이라는 결과가 나타난다.

 

이제 조건문과 합쳐진 함수를 만들어 본다.

만들 함수의 내용을 '주석'으로 적으면 다음과 같다.

 

주석1의 코드는 다음과 같다.

먼저 함수를 정의하고 함수명을 sayHello라고 하고 매개변수는 name, age 2개를 사용한다.

 

만들어야 하는 내용을 순서대로 코드로 만들어 보자.

주석2의 코드는 다음과 같다.

 

if(만약) age(나이)가 < (작으면) 10 (10보다)

뒤에 매개변수명을 더하기로 붙이면 '안녕' 다음에 이름을 붙여서 나타낼 수 있다.

 

주석3의 코드는 다음과 같다.

'10살부터 20살 까지'라는 말은 다른 표현으로 '10 이상 20 이하'라고 한다.

(이상, 이하는 포함하는 수라고 기억하자)

 

elif(또 만약) age(나이)가 >=(크거나 같으면) 10(10보다) and(그리고) age(나이)가 <=(작거나 같으면) 20 (20보다)

 

주석4의 코드는 다음과 같다.

else(그렇지 않으면, 위의 경우 이외에는)

 

위와 같이 만든 say_hello 함수를 실행해보자.

매개변수와 나이에 적당한 문자와 숫자를 넣어서 Run Module(F5)을 클릭하여 실행한다.

 

 

함수에 작성한 코드 대로 정확히 출력되었다.

이런 식으로 함수를 만들면 되니까 만들고 싶은 내용을 코드로 어떻게 표현하는지 배우는 일만 남았다.

 

 

오늘은 여기까지.

 

$참고:

 

사실 지금까지 몇 달 동안 '코틀린'을 배워온 터라 '파이썬'을 새로 배워도 어색하지 않고 이해하기도 쉽다.

(아직 숙달이 안되었는지 코틀린과 조금 헷갈리는 건 있다)

그러므로 어떤 코딩 언어든지 하나를 어느 정도 숙달해 놓으면 다른 코딩언어를 새로 배우는 것은 크게 어렵지 않은것 같다.

 

지금까지 변수, 함수 등에 대해 설명해야 할 것이 아직 많지만 여기서는 인공지능 학습을 위해 파이썬이 어떻게 운용되는지 간단하게만 확인하는 정도 밖에 다루지 않는다. 인공지능 학습에 들어가서 필요한 부분이 생기면 그때 추가로 다루기로 하겠다.

 

유튜버 '테크보이 워니'도 어느 영상에서 말했지만 코딩을 빠른 시간내에 숙달하려면 기초는 대충 정리하고 무조건 직접 만들어 보는 것이 제일 좋다고 했다. 내가 그 말을 믿고 생전 처음 코틀린이라는 언어를 그렇게 배웠는데 프로젝트 수 십개 만들면서 실감할 수 있었다.

 

 

Wraven...