지금까지는 프로그램의 조각들만 살펴 보았지만 지금부터는 조금 더 큰 프로그램들을 살펴 볼 것입니다. 

<프로그램 처리 --> 함수 처리 -> 뭔가를 실행 --> 프로그램 처리 됨 >

이러한 방식으로 지금까지보다 조금 더 큰 방식을 처리 할 수 있습니다. 즉, 함수 자체에 프로그램을 넣을 수 있는 것입니다. 또, 함수 자체에도 종류가 있으니(함수애도 사용되는 빈도는 차이가 있습니다만..)알아 두시면 큰 도움이 됩니다. 그러면 지금부터 함수에 대해서 간단히 알아 보도록 하겠습니다. 

함수의 정의 방식은 간단히 

def 함수명(a,b):

code


이렇게 정의 하시면 됩니다. 

Main, 즉, 함수에 들어가지 않는 Code에서 전달되는 측의 변수는 a,b로 쓸 수 있고, Call 해야 함수를 사용 할 수 있습니다. 즉, main 측에서 function의 이름을 써야 사용 할 수 있다는 것입니다. 하지만 매개변수 [함수의 ( ) 안에 들어가는 변수]가 없는 함수도 있으므로, function을 부를 때 사용하지 않을 수도 있습니다. 

말로 하기만 하면 복잡하니 코드를 직접 보면서 설명 하도록 하겠습니다.

1. 입력 값x 출력 값x

def function_a():
    print("no_in and out")


function_a()

no_in and out

매개변수도, 전달값도 없는 변수는 위와 같이 사용합니다. 함수의 안에 아무 것도 없으니, 불러 올 때도 함수의 이름만 쓰면, 함수가 불러지겠죠? 그리고, 함수의 안에 있는 내용도 불러 질 것 같습니다. 그리고 실제로 그렇게 됩니다. 간단하기 때문에 제가 즐겨 쓰는 함수죠 ㅎㅎ

2. 입력값o 출력 값x

def function_c(d,e): print(d+e) function_c(2,3)

5

반면에 매개변수가 있고 출력값(return 값)이 없는 함수는 함수 이름을 쓰고 함수를 부를 때 함수의 이름을 쓰고, 함수 안에[ ()안에 ] 값을 써줘야 합니다. 그래야 함수가 적절한 값을 출력해 줍니다. 값이 나오는데 왜 출력값이 없다는 걸까? 라는 생각을 처음에 많이 했는데 프로그램에서는 return값이 없으면 무조건 출력값이 없다고 합니다. 

만약 function_c를 어떤 변수에 대입하고 변수를 출력하면 None값을 출력 할 것 입니다. 


3.입력 값x 출력 값o


def function_d():
    return 3/4

g = function_d()

g

0.75

반면에 입력 값이 없고 출력값(return 값)만 존재하는 함수는 함수를 부를 때 입력 값을(g) 찍어 주고, 그 안에 함수를 넣어 줘야 제대로 된 값이 출력이 됩니다. 입력 값이 없기 때문에 함수에서도 ( ) 안에 아무것도 넣을 필요가 없겠죠? 조금 보면 아시라고 생각됩니다. 하지만 2, 3 번은 별로 아실 필요가 없습니다 ㅎㅎ 잘 사용되지 않기 때문이죠. 사실 1, 4 번만 좀 알아 두시면 됩니다. 자주 사용하는 것은 사실 4번이고 , 개인적으로 선호하는 것은 1번입니다 !


가장 빈번하게 사용되는, 입력 값도 있고, 출력 값도 있는 함수는, 다음과 같은 형태를 취하는데, 

4. 입력 값o 출력 값o

def function_b(a,b,c):
    return pow(a,b)/c


function_b(1,2,3)
0.3333333333333333


함수 안에 모든 프로그램을 구현한 다음에, 어떤 변수를 받을 지 생각하고, 그 변수를 MAIN의 함수에서 던져주면 끝난다, 즉, 여러가지를 생각해야 하지만 쉬운 구현이 가능하다는 장점이 있습니다. 많은 것을 생각해야 한다는 단점은 있지만 코드가 짧아진 다른 장점이 있습니다. 저 같은 경우는 앞에서 언급했다시피 아무것도 없는 첫번 째 경우를 가장 선호하지만 말입니다 ㅎㅎ


2019/02/11 - [OS and 코딩/파이썬] - 8. FOR문

2019/02/10 - [OS and 코딩/파이썬] - 7. While. Break, Continue

2019/02/09 - [OS and 코딩/파이썬] - 6. IF 문


'머신러닝 > 기초 문법' 카테고리의 다른 글

0. 파이썬 출력print and sep  (0) 2019.06.20
가상환경 만들고 삭제하기  (0) 2019.02.14
8. FOR문  (0) 2019.02.11
7. While. Break, Continue  (0) 2019.02.10
6. IF 문  (0) 2019.02.09

+ Recent posts